回 帖 发 新 帖 刷新版面

主题:SQL日期类型字段查询不能显示数据的问题

在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个回复)

沙发

between and 的用法是 “字段 between 内容1 and 内容2”,你多写了一个=号

板凳


去掉“=”也一样!是datetime数据类型。在打开表时显示的是不代时间的日期值,但查询结果是代时间的日期值(2006-4-26——2006-4-26 00:00:00) 。在AND前面和后面都必须输入“2006-4-26 00:00:00”日期时间格式才能显示数据。[em1]

3 楼

WHERE 日期 BETWEEN cdate(2006-1-1) AND cdate(2006-2-1)

4 楼

cdate()不行就用 formatdatetime()

5 楼

[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 楼

你们都没有说出问题的本质,作为时间类型(datetime),其时间其实不是我们看到的方式,而是以公元1900年00月00时00分00秒与当前时间做比较得到的值,然后转换,因此,你在设置smalldatetime时发现其位数为4,但2005-1-1可以存储,这是比较的结果问题,其比较值可能只是33444这样的值,因此你单纯这么写是无法搜索的,你可以用 select date>='2003-09-01' and date<='2005-09-08'这样来搜索,把其当成文本存储,固定10位就可以很好解决各种时间检索问题。

7 楼

select 交货日期
FROM 订单明细
WHERE 交货日期 BETWEEN '2006-1-1' AND '2006-4-1'

我来回复

您尚未登录,请登录后再回复。点此登录或注册