Mysql Сравните два поля datetime
Я хочу сравнить две даты со временем, мне нужны все результаты from tbl where date1 > date2
Select * From temp where mydate > '2009-06-29 04:00:44';
но это просто сравнение дат, а не времени. он дает мне весь набор результатов сегодняшней даты
'2009-06-29 11:08:57'
'2009-06-29 11:14:35'
'2009-06-29 11:12:38'
'2009-06-29 11:37:48'
'2009-06-29 11:52:17'
'2009-06-29 12:12:50'
'2009-06-29 12:13:38'
'2009-06-29 12:19:24'
'2009-06-29 12:27:25'
'2009-06-29 12:28:49'
'2009-06-29 12:35:54'
'2009-06-29 12:36:54'
'2009-06-29 12:49:57'
'2009-06-29 12:58:04'
'2009-06-29 04:13:20'
'2009-06-29 04:56:19'
'2009-06-29 05:00:23'
'2009-06-29 05:04:26'
'2009-06-29 05:08:17'
'2009-06-29 05:26:57'
'2009-06-29 05:29:06'
'2009-06-29 05:32:11'
'2009-06-29 05:52:07'
Спасибо заранее!
Ответы
Ответ 1
Запрос, который вы хотите показать в качестве примера:
SELECT * FROM temp WHERE mydate > '2009-06-29 16:00:44';
04:00:00 - 4 утра, поэтому все результаты, которые вы показываете, приходят после этого, что является правильным.
Если вы хотите показать все после 4PM, вам нужно использовать правильную (24-часовую) нотацию в запросе.
Чтобы сделать вещи более ясными, попробуйте следующее:
SELECT mydate, DATE_FORMAT(mydate, '%r') FROM temp;
Это покажет вам дату и ее 12-часовой период.
Ответ 2
Вы можете использовать следующий SQL для сравнения даты и времени -
Select * From temp where mydate > STR_TO_DATE('2009-06-29 04:00:44', '%Y-%m-%d %H:%i:%s');
Прилагаемый вывод mysql, когда я использовал тот же SQL-код в том же виде таблицы и поля, что вы упомянули в проблеме -
![enter image description here]()
Он должен работать идеально.
Ответ 3
Ваш запрос, видимо, возвратил все правильные даты, даже учитывая время.
Если вы все еще недовольны результатами, дайте DATEDIFF кадр и найдите отрицательные/положительные результаты между двумя датами.
Убедитесь, что ваш столбец mydate
является типом datetime
.
Ответ 4
Вы хотите заказать его?
Select * From temp where mydate > '2009-06-29 04:00:44' ORDER BY mydate;