Mysql strip time składnik z datetime

90

Muszę zrobić porównanie dat w MySQL bez uwzględnienia składnika czasu, tj. Muszę przekonwertować „2008-11-05 14:30:00” na „2008-11-05”

Obecnie robię to:

SELECT from_days(to_days(my_date))

Czy jest na to właściwy sposób?

abarax
źródło

Odpowiedzi:

160

Tak, użyj funkcji daty :

SELECT date(my_date)
Robert Gamble
źródło
14

select date(somedate) jest najczęściej.

Jeśli potrzebujesz dostosować się do innych formatów, możesz użyć:

SELECT DATE_FORMAT(your_date, '%Y-%m-%d');
Społeczność
źródło
2
DATE_FORMAT jest bardzo przydatny na przykład do wyodrębniania składnika roku. Dziękuję Ci.
Mario Awad,
3

W PostgreSQL używasz funkcji TRUNC (), ale nie widzę jej dla MySQL. Z mojego krótkiego wyszukiwania w Google wygląda na to, że musisz ustawić swoją wartość DATETIME na DATE.

date_col = CAST(NOW() AS DATE)

Zobacz http://dev.mysql.com/doc/refman/5.0/en/date-and-time-types.html

Andy Lester
źródło
1
date_trunc()(nie trunc()) nie będzie faktycznie usunąć część czasu w PostgreSQL. Po prostu ustawiłoby to na 00:00:00coś innego.
a_horse_with_no_name
0

Po prostu prosty sposób na zrobienie tego, date("d F Y",strtotime($row['date']))skąd $row['date']pochodzi Twoje zapytanie

Rajeev Kumar
źródło
-5

Możesz użyć ToShortDateString();

Jupirao Bolado
źródło
Czy to nie jest funkcja C #? Pytanie dotyczy rozwiązania MySQL
andrewsi
Jest to C # i faktycznie nie usuwa znacznika czasu: konwertuje wartość bieżącego obiektu DateTime na jego równoważną reprezentację w postaci ciągu krótkiej daty.
Nizar B.