我需要从一天下午5点到第二天早上7点返还票数。 我尝试使用DATEADD使用以下查询,但它没有返回任何结果:
SELECT * FROM dbo.TicketIncidents
WHERE IncidentReportedDt BETWEEN
DATEADD(hh,17,CONVERT(VARCHAR(32), GETDATE(),110))
and DATEADD(hh,7,CONVERT(VARCHAR(32), GETDATE()+1,110))
有没有人有任何建议让这项工作?非常感谢您的帮助。
答案 0 :(得分:2)
尝试使用CAST并添加31小时:
Declare @date as datetime = '2017-09-29 12:00:00.000'
SELECT * FROM dbo.TicketIncidents
WHERE IncidentReportedDt BETWEEN
DATEADD(hour,17,cast(Cast(@date as date) as datetime))
and DATEADD(hour,31,cast(Cast(@date as date) as datetime))
答案 1 :(得分:-1)
我认为你应该使用
DATEADD(hh, 17, CONVERT(DATETIME, CONVERT(DATE, GETDATE())))
而不是
DATEADD(hh,17,CONVERT(VARCHAR(32), GETDATE(),110))
因为以平台相关格式转换为varchar,将其再次转换为日期时间的日期不是最佳方式
在我的意大利语服务器中,您的语法会从varchar到datetime抛出转换错误