2017-03-23 28 views
2

Wie kann ich die Uhrzeit so formatieren, dass nur Stunden und Minuten angezeigt werden? Zum Beispiel Id wie LessonTime TIME(0), um 12:00 statt 12:00:00 anzuzeigen.Format Zeit in SQL?

USE [Assignment] 
GO 
PRINT 'Creating database tables...' 
CREATE TABLE [PupilDetails](
Pupil_ID INT NOT NULL, 
FName VARCHAR(20), 
LName VARCHAR(20), 
DOB DATE, 
LessonDay VARCHAR (10), 
LessonTime TIME(0), 
GuardianFname VARCHAR(20), 
GuardianLname VARCHAR(20), 
ContactNum VARCHAR(15), 
AddressLine1 VARCHAR(20), 
AddressLine2 VARCHAR(20), 
Teacher_ID INT NOT NULL, 
PRIMARY KEY (Pupil_ID), 
CONSTRAINT FK_PupilDetails FOREIGN KEY (Teacher_ID) 
REFERENCES Teachers(ID) 
+3

Formatierung nicht einfach in der Spalte. Ein Zeitdatentyp wird nicht als String gespeichert, intern wird er als Dezimalzahl gespeichert. Jede Formatierung sollte auf der Anwendungsebene erfolgen. Aber wenn Sie es in der Datenbank tun müssen, ist es, wenn die Daten abgerufen werden. –

+0

Mögliches Duplikat von [Wie man die DateTime auf Time umwandelt] (http://stackoverflow.com/questions/30032915/how-to-cast-the-datetime-to-time) –

Antwort

2

Der Wert von time oder datetime Datentyp wird mit dem Format in SQL-Server gespeichert. Wenn Sie die Uhrzeit in einem anderen Format anzeigen möchten, können Sie die Art und Weise ändern, in der Datums- und Datumszeitdatentypen angezeigt werden, wenn sie in einen varchar (oder ,) Datentyp konvertiert werden, der einige integrierte Funktionen verwendet.

Am häufigsten mit convert() styles

select convert(char(5),convert(time(0),sysdatetime())) 

kehrt: 22:01

in SQL Server 2012+ können Sie format()

select format(sysutcdatetime(),'HH:mm') 

kehrt verwenden: 22:01

Aber format() kann langsamer, nehmen hier einen Blick sein: format() is nice and all, but… - Aaron Bertand

+1

Warum 'varchar (5)' wenn Sie weiß schon, dass es immer gleich lang ist? Verwenden Sie stattdessen 'char (5)'. –

+0

@ZoharPeled Guter Punkt; aktualisiert. – SqlZim

0
SELECT LEFT(CAST(getdate() AS Time),5) AS Hours 
-2

SELECT FORMAT (SYSDATETIME(), 'h: mm tt')