日期时间字段的语句有问题:
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')
我什么都没得到
为什么?
答案 0 :(得分:1)
您将字段名称“datetime”放入引号中,MySQL将其视为字符串,而不是列。
SELECT * FROM myTable WHERE datetime > '2011-04-28 21:00:00';
答案 1 :(得分:1)
您正在进行字符串比较,即将字符串“datetime”与特定日期进行比较。
将您的查询更改为
...WHERE ([datetime] = '2011-04-28 21:27:04')
答案 2 :(得分:0)
您实际上是将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特有的,您没有指定要使用的数据库,这些函数往往是特定于数据库的。
答案 3 :(得分:0)
删除列名称周围的引号:
SELECT * FROM myTable WHERE (datetime > '2011-04-28 21:00:00')
在您的查询中,您要将string
“日期时间”与由数字组成的另一个string
进行比较。
字母数字,数字在字母之前,因此“datetime”字符串大于您要比较的数字日期字符串。