Jak oddzielić DATĘ i CZAS od DATETIME w MySQL

84

Przechowuję pole DATETIME w tabeli. Każda wartość wygląda mniej więcej tak: 2012-09-09 06:57:12 .

Używam tej składni:

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

Teraz moje pytanie brzmi: w jaki sposób podczas pobierania danych można uzyskać osobno datę i godzinę , używając pojedynczego zapytania MySQL?

Data jak 2012-09-09 i czas jak 06:57:12 .

Panno Rosy
źródło
prawdopodobnie szukasz, DATE_FORMATa nie, DATEa TIMEponieważ poda Ci domyślną datę, jeśli szukasz czasu i domyślnego czasu, jeśli szukasz daty, zobacz moją odpowiedź poniżej.
John Woo,

Odpowiedzi:

128

Możesz to osiągnąć za pomocą DATE_FORMAT () ( kliknij link po więcej innych formatów )

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

SQLFiddle Demo

John Woo
źródło
Cześć, jak uzyskać wartość? czy mogę użyć echo DATEONLYdo drukowania daty i echo TIMEONLYdo drukowania czasu? Albo co??
Miss Rosy,
@MissRosy tak, możesz użyć ich aliasu ( np. DATEONLY i TIMEONLY ), aby uzyskać żądane wartości.
John Woo,
2
@MissRosy kliknij link do demonstracji
John Woo
@MissRosy, nie ma za co. Najlepsze jest to, że możesz go sformatować do dowolnej formy.
John Woo,
@ John..yes..Uwielbiam to :)
Miss Rosy
49

zgodnie z dokumentacją mysql, funkcja DATE () pobierze część daty z funkcji daty i godziny, a TIME () z części czasu. więc spróbuję:

select DATE(dateTimeFeild) as Date, TIME(dateTimeFeild) as Time, col2, col3, FROM Table1 ...
Frank Thomas
źródło
17

Próbować:

SELECT DATE(`date_time_field`) AS date_part, TIME(`date_time_field`) AS time_part FROM `your_table`
Sudhir Bastakoti
źródło
to nie dostanie DATEi TIMEtylko to, co użytkownik prosi. Poda całą datę i godzinę z ustawieniami domyślnymi. SPRZEDAJ TEN LINK
John Woo
1
wygeneruje September, 09 2012 00:00:00-0400dla DATE i January, 01 1970 03:20:38-0500dla CZASU
John Woo
4
cóż, jak na zapytanie podaje 2012-09-09 jako date_part i 06:57:12 jako część czasową w mysql
Sudhir Bastakoti
@ Sudhir..Dziękuję bardzo za odpowiedź. To również jest poprawne, ale ... użycie DATE_FORMAT()uczyni Cię bardziej elastycznym.
Miss Rosy,
1
@MissRosy witamy i tak, powinieneś używać rozwiązania, które najbardziej pasuje i jest bardziej elastyczne .. :)
Sudhir Bastakoti
0

Po prostu
SELECT TIME (nazwa_kolumny), DATE (nazwa_kolumny)

Thushara Buddhika
źródło
A co powiesz DATE?
fadlikidd
-2

Tylko do użytku na randkę
date("Y-m-d");

i tylko na czas
date("H:i:s");

Swapnil
źródło
6
hej, podasz rozwiązanie php, a nie sql :)
maq