Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 从SQL Server中的getdate()中选择特定的小时和分钟_Sql Server_Hour_Getdate_Minute - Fatal编程技术网

Sql server 从SQL Server中的getdate()中选择特定的小时和分钟

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

上述查询用于在上午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,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