Выбор отдельной даты в день только из даты и времени (ГГГГ-ММ-ДД ЧЧ: ММ: СС) в MySQL

Выполнение этой команды приводит меня к следующему (все даты из всех столбцов, поэтому он по сути делал то же самое, что и SELECT date без четкого):

SELECT DISTINCT date FROM daily ORDER BY date DESC 2013-02-12 16:40:52 2013-02-06 11:48:49 2013-02-06 11:36:41 2013-02-06 11:35:59 2013-02-04 19:38:12 2013-02-04 18:12:30 2013-02-04 09:58:41 2013-02-04 09:43:01 2013-02-04 09:35:51 2013-02-04 09:30:22 2013-02-04 09:24:57 2013-02-04 09:21:09 2013-02-04 08:50:13 

Что мне нужно:

 2013-02-12 2013-02-06 2013-02-04 
  1. Есть ли способ изменить свою таблицу дат и преобразовать ее в YYYY-MM-DD?

  2. Если нет, есть ли способ выбрать отдельные даты, основанные только на день?

 mysql> select DATE_FORMAT(Current_Timestamp, '%c %d %Y') from dual; +--------------------------------------------+ | DATE_FORMAT(Current_Timestamp, '%c %d %Y') | +--------------------------------------------+ | 2 12 2013 | +--------------------------------------------+ 1 row in set (0.01 sec) mysql> 

конечно, вы бы использовали свою ежедневную таблицу.

 mysql> select DATE_FORMAT(Date, '%c %d %Y') from daily; 

или, может быть, вы хотите

 mysql> select * from daily group by DATE_FORMAT(Date, '%c %d %Y'); 

Я нашел в больших наборах данных> N миллионов, группировка по DATE_FORMAT может быть на 10-20% медленнее, чем использование;

  GROUP BY someid,year(date),month(date),day(date) 

Попробуй это:

 SELECT DISTINCT(CONVERT(VARCHAR, CONVERT(DATETIME,[DATE]),23)) AS DT FROM DAILY ORDER BY DT ASC 

Для MySQL вы можете использовать DATE(date) чтобы вернуть только дату. Если вы хотите отформатировать его, используйте DATE_FORMAT :

 SELECT DISTINCT DATE_FORMAT(yourdate, '%Y-%m-%d') FROM daily ORDER BY DATE(yourdate) DESC 

Вы не можете изменить способ хранения этих значений в базе данных.

И вот сценарий: http://sqlfiddle.com/#!2/f50527/6

В Access DB

 SELECT DISTINCT Format(date, 'Short Date') FROM daily ORDER BY Format(date, 'Short Date') DESC;