Sql server 从SQL Server中的getdate()中选择特定的小时和分钟
上述查询用于在上午9点到下午3:30之间提取数据,下午1点除外 但我需要修改此查询以在上午9:30到下午3:30之间获取数据,下午1点除外Sql server 从SQL Server中的getdate()中选择特定的小时和分钟,sql-server,hour,getdate,minute,Sql Server,Hour,Getdate,Minute,上述查询用于在上午9点到下午3:30之间提取数据,下午1点除外 但我需要修改此查询以在上午9:30到下午3:30之间获取数据,下午1点除外 有人能帮我吗?转换成时间似乎是这里最简单的解决办法 ((DATEPART(HOUR, getdate()) BETWEEN 9 AND 15) or (DATEPART(HOUR, getdate())= 15 and (DATEPART(MINUTE, getdate()) between 00 and 30))) 其中CONVERT(time,GET
有人能帮我吗?转换成
时间似乎是这里最简单的解决办法
((DATEPART(HOUR, getdate()) BETWEEN 9 AND 15) or (DATEPART(HOUR, getdate())= 15 and (DATEPART(MINUTE, getdate()) between 00 and 30)))
其中CONVERT(time,GETDATE())>='09:30:00'和CONVERT(time,GETDATE())<'15:30:00'
而不是(CONVERT(time,GETDATE())>='13:00:00'和CONVERT(time,GETDATE())<'14:00:00')
或者你可以:
WHERE CONVERT(time,GETDATE()) >= '09:30:00' AND CONVERT(time,GETDATE())< '15:30:00'
AND NOT(CONVERT(time,GETDATE())>= '13:00:00' AND CONVERT(time,GETDATE())< '14:00:00')
WHERE((CONVERT(time,GETDATE())>='09:30:00'和CONVERT(time,GETDATE())<'13:00:00')
或者(转换(time,GETDATE())>='14:00:00'和转换(time,GETDATE())<'15:30:00'))
参考您的查询
WHERE ((CONVERT(time,GETDATE())>= '09:30:00' AND CONVERT(time,GETDATE())< '13:00:00')
OR (CONVERT(time,GETDATE())>= '14:00:00' AND CONVERT(time,GETDATE())< '15:30:00'))
((DATEPART(HOUR,getdate())介于10和14之间)
和(DATEPART(HOUR,getdate())13)
或者(DATEPART(HOUR,getdate())=15和(DATEPART(MINUTE,getdate())介于00和30之间))
或者(DATEPART(HOUR,getdate())=9和(DATEPART(MINUTE,getdate())介于30和59之间)
类似于您的实现
- 上午10点到下午3点之间的第一个条件
- 下午3:00至3:30之间的第二个条件
- 上午9时30分至9时59分之间的第三种情况
例如:
((DATEPART(HOUR, getdate()) BETWEEN 10 AND 14)
AND (DATEPART(HOUR, getdate()) <> 13)
or (DATEPART(HOUR, getdate())= 15 and (DATEPART(MINUTE, getdate()) between 00 and 30))
OR (DATEPART(HOUR, getdate())= 9 and (DATEPART(MINUTE, getdate()) between 30 and 59)))
注:不包括例外情况。其中cast(cast(getDate()作为float)-floor(cast(getDate()作为float))作为datetime)
((DATEPART(HOUR, getdate()) BETWEEN 10 AND 15)
or (DATEPART(HOUR, getdate())= 15 and (DATEPART(MINUTE, getdate()) between 00 and 30))
or (DATEPART(HOUR, getdate())= 9 and (DATEPART(MINUTE, getdate()) between 30 and 59)))
在'09:30:00'和'15:30:00'之间
和datepart(hour,getDate())13
或
其中转换(时间,getDate())
在'09:30:00'和'15:30:00'之间
和datepart(hour,getDate())13
从测试12中选择*,其中(DATEPART(小时,Trackdatetime)>=09,DATEPART(分钟,Trackdatetime)>=30)
和(DATEPART(小时,Trackdatetime)=30)
除了
从测试12中选择*其中(DATEPART(小时,Trackdatetime)=13和DATEPART(分钟,Trackdatetime)=00)
是。不管数据是什么,我都希望从当天09:00-13:00和14:00-15:30期间获取数据。您的time
示例确实帮助了我。很高兴能够提供帮助,@SathiyaKumar。实际上,这将只返回09:00和15:59:59.99999之间的数据,作为DATEPART(HOUR,GETDATE())在9和15之间)
将在所有这些时间都为真。@Larnu可以看到一次。我希望我们能回答。这似乎是一种非常冗长的方法,可以将GETDATE()
转换为1900-01-01
上的同一时间,以便在该时间使用文本字符串,当SQL Server中存在time
数据类型时。我仍在使用SQL Server 2000的某些环境中工作-没有time
datatype-。2000在@Xabi(超过6年)长期不受支持。通常,您可以假设OP使用的是其询问的产品的受支持版本的堆栈溢出;他们通常会建议使用非常旧的软件。对于SQL Server来说,这是2008-2017年(2008年只剩下几个月了)。就个人而言,如果您仍在使用2000,我建议您尽快解决该问题,因为在2008年的支持结束后,这将变得更加困难(因为SQL Server 2000的最新版本可以在上恢复)。否-您没有准确描述当前查询的功能-这意味着您可能会误导自己和他人。当前查询检索9:00:00和15:59:59之间的值-OR部分不相关,因为第一部分与它重叠。
where cast(cast(getDate() as float) - floor(cast(getDate() as float)) as datetime)
between '09:30:00' and '15:30:00'
and datepart(hour, getDate())<>13
where convert(time, getDate())
between '09:30:00' and '15:30:00'
and datepart(hour, getDate())<>13