主题:SQL日期类型字段查询不能显示数据的问题
懒UFO
[专家分:0] 发布于 2006-04-25 22:43:00
在SQL条件字段(日期类型)输入:“WHERE 日期=BETWEEN 2006-1-1 AND 2006-2-1 ”不能显示数据,只能显示字段标题。如果输入:“WHERE 日期=BETWEEN 2006-1-1 00:00:00 AND 2006-2-1 00:00:00 ”才能显示数据,为什么呢?难道在程序提示输入的时候还要求用户输入不存在的“00:00:00 ”吗?或者在编码时再加上“00:00:00 ”?求教各位了! [em10]
回复列表 (共7个回复)
沙发
yaozheng [专家分:28410] 发布于 2006-04-25 23:10:00
between and 的用法是 “字段 between 内容1 and 内容2”,你多写了一个=号
板凳
懒UFO [专家分:0] 发布于 2006-04-26 22:10:00
去掉“=”也一样!是datetime数据类型。在打开表时显示的是不代时间的日期值,但查询结果是代时间的日期值(2006-4-26——2006-4-26 00:00:00) 。在AND前面和后面都必须输入“2006-4-26 00:00:00”日期时间格式才能显示数据。[em1]
3 楼
kdm0514 [专家分:5210] 发布于 2006-04-27 01:35:00
WHERE 日期 BETWEEN cdate(2006-1-1) AND cdate(2006-2-1)
4 楼
kdm0514 [专家分:5210] 发布于 2006-04-27 01:36:00
cdate()不行就用 formatdatetime()
5 楼
懒UFO [专家分:0] 发布于 2006-04-27 21:39:00
[b]还是不行!显示不可识别的函数。
有一个[订单明细]表、[交货日期]字段,我想查询任意时间段内的订单明细。字段[交货日期]为smalldatetime数据类型。
当我按照下面的代码执行时只显示了字段标题:[/b]
use crunwaixie
go
select 交货日期
FROM 订单明细
WHERE 交货日期 BETWEEN (2006-1-1) AND (2006-4-1)
[b]当我按照下面的代码执行时显示不可识别的函数:[/b]use crunwaixie
go
select 交货日期
FROM 订单明细
WHERE 交货日期 BETWEEN formatdatetime(2006-1-1) AND formatdatetime(2006-4-1)
6 楼
williambolice [专家分:470] 发布于 2006-04-28 00:45:00
你们都没有说出问题的本质,作为时间类型(datetime),其时间其实不是我们看到的方式,而是以公元1900年00月00时00分00秒与当前时间做比较得到的值,然后转换,因此,你在设置smalldatetime时发现其位数为4,但2005-1-1可以存储,这是比较的结果问题,其比较值可能只是33444这样的值,因此你单纯这么写是无法搜索的,你可以用 select date>='2003-09-01' and date<='2005-09-08'这样来搜索,把其当成文本存储,固定10位就可以很好解决各种时间检索问题。
7 楼
菜鸭 [专家分:5120] 发布于 2006-04-28 07:37:00
select 交货日期
FROM 订单明细
WHERE 交货日期 BETWEEN '2006-1-1' AND '2006-4-1'
我来回复