时间类型默认的时分秒

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

前几天被时间类型给郁闷了,我要做这样一个工作,取出某天到某天的记录,这些记录都有一个字段记录着是什么时候创建的,而且详细到了秒。例如:

Id CreateTime

1 2007-01-19 10:48:36

2 2007-01-19 23:35:36

3 2007-01-18 23:35:36

我要取出'2007-01-18'到'2007-01-19'的数据,其实这个需求并不难,所以当时直接就用Where Crea teTime Between StartTime And EndTime,但是得到的结果却没有包含19号的数据,例如:

Select * From T_TimeTest Where [Time] Between '2007-1-18' And '2007-1-19'

得到的结果是:

3 2007-01-18 23:35:36.000

于是我又换成比较大小的方式,如:

Select * From T_TimeTest Where [Time] >= '2007-1-18' And [Time] <= '2007-1-19' 但结果一样,这样可以确定语句上应该没什么问题,问题在时间类型默认的时分秒上,做这样一个例子 Declare @Time DateTime

Set @Time = '2007-1-18'

Print @Time

输出结果是:

Jan 18 2007 12:00AM

看到结果,我突然有一个问题:12:00AM是中午还是凌晨,问问我的同事,他们告诉我:不要想这个问题,否则你会疯的。(看来他可能为此疯过)不过从上面的结果看12:00AM应该是凌晨。最后同事建议我用字符串比较大小来解决这个问题。如下

Select * From T_TimeTest Where Convert(varchar(10),[Time],120) >= '2007-01-18' An d Convert(varchar(10),[Time],120) <= '2007-01-19'

结果如下:

1 2007-01-19 10:48:36.000

2 2007-01-19 23:35:36.000

3 2007-01-18 23:35:36.000

其中Convert(varchar(10),[Time],120)中的“120”是一个格式

(请您对文章做出评价)

相关文档
最新文档