昨天运行每日报告

时间:2015-09-03 13:07:27

标签: sql-server-2012

我需要每天凌晨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))

3 个答案:

答案 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作为过滤器

希望这会有所帮助。