选择日期和时间在SQL 10PM高达06:00每天

问题描述:

SELECT scandate from FPI where scandate BETWEEN '2017-07-20' and '2017-07-25' DATEPART(hh,[scandate]) >= 22 AND DATEPART(hh,[scandate]) < 6 

,但我什么也没有......选择日期和时间在SQL 10PM高达06:00每天

SELECT scandate from FPI where scandate BETWEEN '2017-07-20' and '2017-07-25' DATEPART(hh,[scandate]) >= 14 AND DATEPART(hh,[scandate]) < 22 

14:00至22:00是工作,但为晚上10时到早上6时它不工作... TIA

+0

请记住,如果您要在上午6点前下一个日期,则应该执行dateadd(day,scandate,1) 。 – Chuck

+0

如果你没有在日期中添加一个,你如何在上午6点到午夜之间获得时间? – Chuck

+0

其5天之间无需添加一天.. –

你在第一个查询需要OR

SELECT scandate 
FROM FPI 
WHERE scandate BETWEEN '2017-07-20' and '2017-07-25' AND 
     (DATEPART(hour, scandate) >= 22 OR DATEPART(hour, scandate) < 6) 
+0

这是太好了!谢谢 –

使用OR

SELECT scandate from FPI where scandate BETWEEN '2017-07-20' and '2017-07-25' DATEPART(hh,[scandate]) >= 22 OR DATEPART(hh,[scandate]) < 6; 
+0

其错误我得到的数据..但输出是470k –

+0

谢谢你们我解决了这个问题 我只是添加日期部分之间的OPEN和CLOSE() 从FPI选择scandate其中scandate BETWEEN'2017-07-20 '和'2017-07-25'DATEPART(hh,[scandate])> = 22或DATEPART(hh,[scandate])

+0

如果解决了您的问题,请接受答案:) –

您需要添加一个日期:

SELECT scandate 
FROM FPI 
WHERE scandate BETWEEN '2017-07-20' and dateadd(day,1,'2017-07-25') AND 
    (DATEPART(hour, scandate) >= 22 OR DATEPART(hour, DATEADD(day,1, scandate)) < 6) 

SELECT钪 从FPI WHERE钪BETWEEN '2017年7月20日' 和 '2017年7月25日' 和 (DATEPART (小时,scandate)> = 22或DATEPART(小时,scandate)< 6)