В SQL, как сравнить значения даты?

Это невозможно при использовании Inheritedwidget. Виджет создан не для обработки данных, а для обмена ими.

Вы должны заключить ваш унаследованный виджет в виджет Stateful и использовать его для удаления

11
задан GEOCHET 3 March 2009 в 21:22
поделиться

5 ответов

Nevermind нашел ответ. Ty то же для любого, кто был готов ответить.

WHERE DATEDIFF(mydata,'2008-11-20') >=0;
9
ответ дан 3 December 2019 в 01:53
поделиться

Мм, WHERE mydate<='2008-11-25' путь состоит в том, чтобы сделать это. Это должно работать.

Вы получаете сообщение об ошибке? Вы используете древнюю версию MySQL?

Править: Следующее хорошо работает для меня на MySQL 5.x

create temporary table foo(d datetime);
insert into foo(d) VALUES ('2000-01-01');
insert into foo(d) VALUES ('2001-01-01');
select * from foo where d <= '2000-06-01';
19
ответ дан 3 December 2019 в 01:53
поделиться

Вы могли добавить компонент времени

WHERE mydate<='2008-11-25 23:59:59'

но это могло бы перестать работать в даты переключения DST, если mydate '25.11.2008 24:59:59', таким образом, является, вероятно, самым безопасным захватить все перед следующей датой:

WHERE mydate < '2008-11-26 00:00:00'
1
ответ дан 3 December 2019 в 01:53
поделиться

В стандартном синтаксисе SQL Вы использовали бы:

WHERE mydate <= DATE '2008-11-20'

Таким образом, ДАТА ключевого слова должна предшествовать строке. В некотором DBMS, однако, Вы не должны быть настолько явными; система преобразует столбец DATE в строку или строку в значение ДАТЫ, автоматически. Существуют номинально некоторые интересные последствия, если ДАТА преобразовывается в строку - если у Вас, оказывается, есть даты в первое тысячелетие (01.01.01.. 31.12.999), и начальный нуль (нули) опущены системой форматирования.

7
ответ дан 3 December 2019 в 01:53
поделиться

Ваша проблема может состоять в том, что Вы имеете дело с данными ДАТЫ И ВРЕМЕНИ, не просто датами. Если строка имеет mydate, который является '25.11.2008 9:30', то Ваш ГДЕ mydate <= '2008-11-25'; движение не должно возвращать ту строку. '2008-11-25' имеет подразумеваемое время 0:00 (полночь), поэтому даже при том, что часть даты является тем же, они не равны, и mydate больше.

Если бы Вы используете <'2008-11-26' вместо <= '2008-11-25', который работал бы. Метод Datediff работает, потому что он сравнивает просто часть даты и игнорирует времена.

0
ответ дан 3 December 2019 в 01:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: