sql查询中time字段的使用
创始人
2024-07-15 04:20:38
0

time字段应该算是sql 语句中一个特殊字段,在sql查询中如何使用time字段成为了我们需要思考的问题,下面就将为您分析该问题的处理方法,供您参考。

在vbscript中插入的时候我们因该使用 #2007-5-1#这样的格式,在sql server 中也可以用'2007-5-1'他会自动转换成时间格式,但在sql查询中因该怎么使用呢。

比如我在数据库中设置了一个 user_time 时间字段,现在我们用这个来进性查询操作

比如我要找某个=与某个日期的数据:

可以这样写:
SELECT * FROM table WHERE      user_regTime ='2007-05-01 09:45:25.263'       这里因为时间字段在写入数据库时会自动把没有的结尾的部分自动补上所以直接这样写:

SELECT * FROM table WHERE      user_regTime ='2007-05-01' 写是搜索不到数据的。 因为虽然前面相等但是后面还是不相等的。

这因该怎么解决呢。这就需要DATEDIFF函数来解决了,他会自动计算某个日期的差额,一半我们设置为day      =0就可以了。

例如:SELECT * FROM table WHERE      DATEDIFF(day,user_regTime '2007-05-01' )=0

但是做大与 小与的数据可以直接user_regTime >'2007-05-01'      这时其实比较字段值和2007-05-01 00:00:00 的大小了。

还有比较特殊的查询就是周查询了,因为在国外的星期天是星期一这点和中国的不一样,所以取周的时候因该把当前日期全部退够一天才能比较。
这里运用了:datediff返回时间间隔函数
                   datepart取当前时间的某一段函数
                   DATEADD 增加某个时间段函数

完整语句就是:
select * from bbs_topics where datediff(d,modifydate,getdate())<(datepart(dw,DATEADD(day, -1, getdate())))
注意这里<而不是<=这是因为计算日期间隔是从0开始的所以间隔6就是星期一了,如过还=7则连上星期天都计算进去了。

modifydate是时间字段,dw是返回星期几,dateadd里面的-1是在当前日期减去1天

好多人写刷选一周的是这样写的 datediff(d,modifydate,getdate())<=7这样写其实是不对的,因为在一周的星期二时间和上周的星期6之间他们之间是不同周,但时间差4天还是<=7的。

还就是月份 datediff(d,modifydate,getdate())<=32这样写也是不对,道理同上。

因该这样写datepart(m,modifydate)=datepart(m,getdate())
取的字段值里面的月,在和当前月比较相等就是同一月,不等就是不同月。
 

 

 

【编辑推荐】

使用SQL查询连续号码段的方法

SQL查询***最小值的示例

SQL查询效率的讨论

SQL查询日期的问题

For循环中执行SQL查询的讨论

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...