我需要每天凌晨1点为昨天访问过酒店的所有客户报告。我不明白我做错了什么。我正在尝试如下,但它没有给我任何记录。 CheckInDate格式为'2015-09-02 06:45:00.000'。请协助。感谢。
Select top 5 * from Customers where CheckInDate = DATEADD(day, -1, GETDATE())
以下工作:
select top 5 * from Customers where cast(CheckInDate as date) = DATEFROMPARTS(YEAR(GETDATE()-1), MONTH(GETDATE()-1), DAY(GETDATE()-1))
答案 0 :(得分:0)
试试这个。
SELECT top 5 from Customers where CheckInDate = DATEADD(DAY,DATEDIFF(DAY,0,'2015-09-02 06:45:00.000'),0) - 1
DateAdd
函数会将日期转换为2015-09-02 00:00:00.000
格式,并减去1天。即2015-09-01 00:00:00.000
您可以将存储过程中的日期作为参数传递,其余部分将由select语句
处理希望这会有所帮助..
答案 1 :(得分:0)
select top 5 * from Customers where cast(CheckInDate as date) = DATEFROMPARTS(YEAR(GETDATE()-1), MONTH(GETDATE()-1), DAY(GETDATE()-1))
答案 2 :(得分:0)
你的昨天是TranDate - 1吗?也许这应该有所帮助。
select top 5 * from customers where checkindate
BETWEEN
CONVERT(DATETIME, CONVERT(VARCHAR(20),(GETDATE() - 1),101) + ' 00:00') -- start of the day or you can modify it base on your report cut-off
AND CONVERT(DATETIME, CONVERT(VARCHAR(20),(GETDATE() - 1),101) + ' 23:59') -- until end of the day or '23:59' of the GETDATE() - 1
这是做什么的
(GETDATE() - 1),101)
=' 09/03/2015'
然后' 00:00'然后给你' 09/03/2015 00:00:00'然后再将其转换为datetime作为过滤器