So trennen Sie DATE und TIME von DATETIME in MySQL

82

Ich speichere ein DATETIME- Feld in einer Tabelle. Jeder Wert sieht ungefähr so aus: 2012-09-09 06:57:12 .

Ich benutze diese Syntax:

   date("Y-m-d H:i:s");

Meine Frage ist nun, wie beim Abrufen der Daten Datum und Uhrzeit mithilfe der einzelnen MySQL-Abfrage getrennt abgerufen werden können.

Datum wie 2012-09-09 und Uhrzeit wie 06:57:12 .

Miss Rosy
quelle
wahrscheinlich suchen Sie DATE_FORMATund nicht DATEund TIMEweil es Ihnen Standarddatum gibt, wenn Sie nach Zeit suchen, und Standardzeit, wenn Sie nach Datum suchen, siehe meine Antwort unten.
John Woo

Antworten:

126

Sie können dies mit DATE_FORMAT () erreichen ( klicken Sie auf den Link für weitere andere Formate ).

SELECT DATE_FORMAT(colName, '%Y-%m-%d') DATEONLY, 
       DATE_FORMAT(colName,'%H:%i:%s') TIMEONLY

SQLFiddle-Demo

John Woo
quelle
Hallo, wie bekomme ich den Wert? Kann ich echo DATEONLYzum Drucken des Datums und echo TIMEONLYzum Drucken der Uhrzeit verwenden? Oder was??
Fräulein Rosy
@MissRosy Ja, Sie können ihren Alias ​​( z. B. DATEONLY und TIMEONLY ) verwenden, um die gewünschten Werte zu erhalten.
John Woo
@ MissRosy du bist willkommen. Das Beste ist, Sie können es in jede gewünschte Form formatieren.
John Woo
@ John..yes..Ich liebe das Ding :)
Miss Rosy
49

Gemäß der MySQL-Dokumentation zieht die Funktion DATE () den Datumsteil eines Datums- / Uhrzeitfelds und TIME () für den Zeitabschnitt. also würde ich versuchen:

select DATE(dateTimeFeild) as Date, TIME(dateTimeFeild) as Time, col2, col3, FROM Table1 ...
Frank Thomas
quelle
17

Versuchen:

SELECT DATE(`date_time_field`) AS date_part, TIME(`date_time_field`) AS time_part FROM `your_table`
Sudhir Bastakoti
quelle
Dies wird nicht das DATEund TIMEnur als das bekommen, was der Benutzer fragt. Es gibt das gesamte Datum und die Uhrzeit mit den Standardeinstellungen an. VERKAUFEN SIE DIESEN LINK
John Woo
1
es wird September, 09 2012 00:00:00-0400für DATE und January, 01 1970 03:20:38-0500für TIME
John Woo
4
Nun, laut Abfrage gibt es 2012-09-09 als date_part und 06:57:12 als time part in mysql
Sudhir Bastakoti
@ Sudhir .. Vielen Dank für die Antwort. Dies ist auch richtig, aber ... DATE_FORMAT()macht Sie flexibler.
Fräulein Rosy
1
@ MissRosy willkommen, und ja, Sie sollten eine Lösung verwenden, die am besten passt und flexibler ist .. :)
Sudhir Bastakoti
0

Einfach
SELECT TIME (Spaltenname), DATE (Spaltenname)

Thushara Buddhika
quelle
Wie wäre es DATE?
tcadidot0
-2

Nur zur Datumsverwendung
date("Y-m-d");

und nur für den zeitlichen Gebrauch
date("H:i:s");

Swapnil
quelle
6
Hey, du gibst eine PHP-Lösung, nicht SQL's :)
Maq