计算SQL中的日期差异

时间:2017-08-16 20:38:23

标签: mysql sql date

我实际上是SAS编码器,并试图弄清楚如何计算SQL上的日期差异。这是一个场景 - 我将在每个星期一,星期三和星期五执行相同的查询,它将查找在过去几天开立帐户的客户。从技术上讲,当我在星期一执行查询时,代码必须寻找在周五,周日和周日开立账户的客户,当我在周三执行时,代码必须寻找在星期一和星期二开通的客户,当我在星期五和星期四执行它必须寻找在星期三和星期四开设帐户的客户。请给我任何建议。我想自动化脚本,所以任何帮助都非常感谢。我目前正在使用SQL WorkBench将我的脚本从sas移动到SQL

2 个答案:

答案 0 :(得分:0)

您真的只是在寻找过去两天或三天内创建的客户,具体取决于一周的日期,而不包括今天创建的客户:

SELECT * FROM customers 
WHERE 
  createdate >=
    CASE 
      WHEN DAYOFWEEK(CURDATE()) = 2 -- when Monday
      THEN DATE_SUB(CURDATE(), interval 3 day) -- then today minus 3 days
      ELSE DATE_SUB(CURDATE(), interval 2 day) -- else today minus two days
    END
  AND createdate < CURDATE()

答案 1 :(得分:0)

我会创建一个脚本,将变量保存为上次运行脚本的日期,以便可以在任何一天使用它。伪代码将放在[括号中],因为我不确定您的某些偏好或命名约定。

DECLARE @MyLastDate [Data Type for persisting date]
DECLARE @TodaysDate [Data Type for persisting date]

if @MyLastDate == null {
SET @MyLastDate = [Todays Date]
}

SELECT * FROM [myTableName]
WHERE customerOpenDate BETWEEN '@MyLastDate' AND '@TodaysDate'

SET @MyLastDate = [Todays Date]

我可能错过了一些步骤,因为我错过了一些细节,但这个逻辑应该足以让你走了。