Ошибка оператора SQL SELECT с датой и временем - PullRequest
0 голосов
/ 29 апреля 2011

Что-то не так с утверждениями с полем datetime:

MyDB:

id  name   datetime
1   test1  2011-04-28 19:37:44
2   test2  2011-04-28 21:27:04

Когда я запускаю следующее утверждение

SELECT * 
FROM myTable 
WHERE ('datetime' > '2011-04-28 21:00:00')

Я получаю все - test1 и test2

Когда я запускаю это утверждение

SELECT * 
FROM myTable 
WHERE ('datetime' = '2011-04-28 21:27:04')

Я ничего не получаю

Когда я запускаю следующее утверждение

SELECT * 
FROM myTable 
WHERE ('datetime' > '2011-04-28 21:00:00')
    AND ('datetime' < '2011-04-29 21:00:00')

Я ничего не получаю

Почему?

Ответы [ 4 ]

1 голос
/ 29 апреля 2011

Вы проводите сравнение строк, то есть сравниваете строку"datetime" с определенной датой.

Измените ваш запрос на

...WHERE ([datetime] = '2011-04-28 21:27:04')
1 голос
/ 29 апреля 2011

Вы помещаете имя поля "datetime" в кавычки, и MySQL рассматривает его как строку, а не столбец.

SELECT * FROM myTable WHERE datetime > '2011-04-28 21:00:00';
0 голосов
/ 29 апреля 2011

Удалить кавычки вокруг названия столбца:

SELECT * FROM myTable WHERE (datetime > '2011-04-28 21:00:00')

В вашем запросе вы сравниваете string "datetime" с другим string, состоящим из чисел.

Буквенно-цифровая, цифры идут перед буквами, поэтому строка "datetime" больше, чем строка числовой даты, с которой вы сравниваете.

0 голосов
/ 29 апреля 2011

Действительно ли вы помещаете имя столбца datetime в одинарные кавычки?Если да, это означает, что вы сравниваете строку 'datetime' со строкой '2011-04-28 21:00:00', что не имеет особого смысла.В SQL, если что-то заключено в одинарные кавычки, обычно это строковый литерал.

Вы пробовали:

SELECT * FROM myTable WHERE datetime > '2011-04-28 21:00:00'

Или более вероятно:

SELECT *
FROM myTable
WHERE datetime > to_date('2011-04-28 21:00:00','YYYY-MM-DD HH24:MI:SS');

Примечание: Что функция to_date и строка формата специфичны для Oracle, вы не указали, какую базу данных вы используете, и эти функции, как правило, зависят от БД.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...