SQL语句错误与datetime

时间:2011-04-28 20:09:02

标签: sql datetime select

日期时间字段的语句有问题:

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 个答案:

答案 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”字符串大于您要比较的数字日期字符串。