Mysql strip time component from datetime

90

Preciso fazer uma comparação de datas no Mysql sem levar em consideração o componente de tempo, ou seja, preciso converter '2008-11-05 14:30:00' em '2008-11-05'

Atualmente estou fazendo isso:

SELECT from_days(to_days(my_date))

Existe uma maneira adequada de fazer isso?

Abarax
fonte

Respostas:

163

Sim, use a função de data :

SELECT date(my_date)
Robert Gamble
fonte
14

select date(somedate) é o mais comum.

Se precisar acomodar outros formatos, você pode usar:

SELECT DATE_FORMAT(your_date, '%Y-%m-%d');
Comunidade
fonte
2
O DATE_FORMAT é muito útil para extrair o componente ano apenas por exemplo. Obrigado.
Mario Awad de
3

No PostgreSQL você usa a função TRUNC (), mas não estou vendo isso para o MySQL. Pelas minhas breves pesquisas no Google, parece que você precisará transmitir seu valor DATETIME para apenas DATE.

date_col = CAST(NOW() AS DATE)

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

Andy Lester
fonte
1
date_trunc()(não trunc()) não removeria realmente a parte do tempo no Postgres. Isso simplesmente configuraria 00:00:00algo diferente.
a_horse_with_no_name
0

Apenas uma maneira simples de fazer isso de date("d F Y",strtotime($row['date']))onde $row['date']vem sua consulta

Rajeev Kumar
fonte
-5

Você poderia usar ToShortDateString();

Jupirao Bolado
fonte
Não é uma função C #? A questão é depois de uma solução MySQL
andrewsi
É C # e, na verdade, não remove o carimbo de data / hora: Converte o valor do objeto DateTime atual em sua representação de string de data curta equivalente.
Nizar B.