SQL协助我是否使用BETWEEN在第二天下午5点到第7天的日期对dabase运行查询?

时间:2017-09-28 14:30:48

标签: sql sql-server

我需要从一天下午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))

有没有人有任何建议让这项工作?非常感谢您的帮助。

2 个答案:

答案 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抛出转换错误