Mysql Сравнить два поля даты и времени

Я хочу сравнить две даты со временем, я хочу все результатыfrom tbl where date1 > date2

<code>Select * From temp where mydate > '2009-06-29 04:00:44';
</code>

но это просто сравнение дат, а не времени. он дает мне весь набор результатов сегодняшней даты

<code>'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'
</code>

Заранее спасибо!

 Jeremy Smyth29 июн. 2009 г., 14:42
Нету! 4 часа дня 16:00:00 :) 4 часа ночи 04:00:00.
 Jeremy Smyth29 июн. 2009 г., 14:39
Хм ... У вас нет ничего видимого до этого. Похоже, вы 'предлагаете' 2009-06-29 11: 08: 57 ' предшествует "2009-06-29 04: 00: 44". 4 утра до 11 утра, и поэтому вы видите, что 11 утра больше 4 утра. Опять я что-то упустил?
 MySQL DBA29 июн. 2009 г., 14:35
Я хочу, чтобы эти даты были выходными, а не до этого '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"
 Jeremy Smyth29 июн. 2009 г., 14:31
Там нет никакого результата, который меньше, чем «2009-06-29 04: 00: 44», так что, похоже, ваш код работает, или я что-то упустил?
 MySQL DBA29 июн. 2009 г., 14:41
2009-06-29 04: 00: 44 ' это 4 вечера, поэтому я не хочу 11 утра записи. могу я получить их

Ответы на вопрос(4)

Решение Вопроса

SELECT * FROM temp WHERE mydate > '2009-06-29 16:00:44';

04:00:00 - 4:00, поэтому все результаты, которые вы отображаете, приходятafter то, что правильно.

Если вы хотите показать все после 4 вечера, вам нужно использовать правильную (24 часа) запись в вашем запросе.

Чтобы сделать вещи немного понятнее, попробуйте это:

SELECT mydate, DATE_FORMAT(mydate, '%r') FROM temp;

Это покажет вам дату и время 12 часов.

Select * From temp where mydate > '2009-06-29 04:00:44' ORDER BY mydate;
 MySQL DBA29 июн. 2009 г., 14:38
нет, я хочу только дату и время после "2009-06-29 04: 00: 44"
 29 июн. 2009 г., 14:47
Попробуйте & amp; выберите * From temp, где mydate & gt; "2009-06-29 16: 00: 44"; "
 29 июн. 2009 г., 14:39
Это то, что у тебя есть.
 29 июн. 2009 г., 14:44
Время, которое вы дали, - 4 часа утра.
 29 июн. 2009 г., 14:43
нет, я получаю весь набор результатов для текущей даты не после даты, которую я указал для ex: - время, которое я дал, - 4 вечера, и я получаю записи 11 утра в этом.

Если вы по-прежнему недовольны результатами, попробуйте DATEDIFF и найдите отрицательные / положительные результаты между двумя датами.

Убедитесь, что вашmydate столбецdatetime тип.

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

Это должно работать идеально.

 28 апр. 2016 г., 12:34
STR_TO_DATE, спасибо !!!
 22 апр. 2015 г., 10:46
Brilliant. Mysql сравнивает строку вместо даты! Я буду помнить это с этого момента. Отличный ответ, проголосовал!

Ваш ответ на вопрос