关于截取datetime类型中某一部分的问题

今天在好朋友的帮助下解决了这个当时我不爱改问题,把它记录下来。

A时间:1900-1-1 10:09:00  (只需要时间,日期是随机生成的,不知道为什么系统选择了1900-1-1)

B时间:2009-2-16 10:18:00

想比较A(Arrive_Time)时间(时分)和B(T_HistoryValue.In_Time)时间(时分)的大小。

当时想了好多方法,后来觉得用先比较Hour,在根据逻辑比较Minute,现在想来,是多么的愚笨啊

后来想了想,为何不把Hour和Minute组成一个整体,经过字符串变化成整数然后比较大小。

后来就在今天一早(9点多,为什么说一早,因为朋友刚上班)请教了朋友,结果茅塞顿开啊。感谢我的朋友。

通过这件事我发现我有点大眼露神,为什么明明在帮助里有这条我就没看到呢?去掉日期的datetime类型变换

语句如下:

CONVERT(char(6),Arrive_Time,114),这条就把日期去掉了。

然后把时间中的冒号去掉,用到replace函数(这个是刚学到的)。语句如下:

Replace(CONVERT(char(6),Arrive_Time,114),':','')

然后再把char变成整数。语句如下:

Cast(Replace(CONVERT(char(6),Arrive_Time,114),':','') as bigint)

然后把B时间也变换了,比较了一下大小。就ok了。

我又发现,where语句中的条件不能乱用,因为可能引起很多语句被屏蔽了。注意!!

posted @ 2009-02-16 15:17  桔子湖  阅读(1740)  评论(0编辑  收藏  举报