大家帮我分析一下,这个表是怎么回事

来源:百度知道 编辑:UC知道 时间:2024/06/27 11:13:12
SQL 2000的一个表A,一共3列,其中一列叫SDATE ,是datetime类型,长度为8位。我连接这个数据库是正常的,但是,我直接写SELECT * FROM A,WHERE SDATE BETWEEN 2009-5-1 AND 2009-7-31
结果查询结果是空的
把条件改成 WHERE MONTH(SDATE)BETWEEN 5 AND 7
则能查出符合条件的结果,也就是5月到现在的数据。
怎么回事呢?
因为我想任意取日期,所以必须用第一种方式查询。
不行,我试过,因为我的原句是
adoquery1.SQL.Add('select * from A ' ) ;
adoquery1.SQL.Add('where sdate between 2009-5-1 and 2009-7-20' )
时间上再加单引号DELPHI就报错了
改成adoquery1.SQL.Add('where momth(sdate) between 5 and 7' ) ,可以正确运行

2009-5-1 是字符串,要加单引号

问题补充:

因为我想任意取日期,所以必须用第一种方式查询。
---------------------------
时间和字符需要用引号
SELECT * FROM A WHERE SDATE BETWEEN '2009-5-1' AND '2009-7-31'

SELECT * FROM A WHERE SDATE BETWEEN '2009-5-1' AND '2009-7-31'

应该这样写,老大

时间要加上''(单引号)