查询以获取未来 7 天内到期的项目

Query to get items due in the next 7 days

我的 table 中有一个 insurance_end 列,这是一个 datetime 值。

今天的日期是:2015-02-20,我想检索将在未来 7 天内结束的项目。

示例数据:

insurance_end
=======================
2017-02-13 00:00:00.000
2016-02-13 00:00:00.000
2015-02-13 00:00:00.000
2015-02-14 00:00:00.000
2015-02-20 00:00:00.000
2015-02-28 00:00:00.000
2015-02-28 00:00:00.000
2015-02-04 00:00:00.000
2015-02-13 00:00:00.000
2015-02-01 00:00:00.000
2015-02-10 00:00:00.000
2013-02-09 00:00:00.000

期望的输出为:

insurance_end
=======================    
2015-02-14 00:00:00.000
2015-02-20 00:00:00.000
2015-02-13 00:00:00.000

这是我尝试过的:

SELECT* 
FROM customer_profile
WHERE DATEADD(dd, -7, insurance_end) <= CAST(insurance_end AS DATETIME)

希望这就是您要找的。

查询

SELECT *
FROM insurance
WHERE 
DATEDIFF(day,GETDATE(),insurance_end)=-7;

Fiddle demo for reference

据我了解,您想显示保险在未来 7 天内结束的记录。

只需使用GETDATE()得到今天的日期,减去7天得到7天前的日期。 CONVERTDATE去掉时间部分。

SELECT CONVERT(DATE, GETDATE()) AS TodaysDate, 
       CONVERT(DATE, GETDATE() - 7) AS TodayMinus7

这会给你:

TodaysDate    TodayMinus7
==========================
2015-02-20    2015-02-13 

然后您可以将此值与您的 insurance_end 值进行比较:

SQL Fiddle Demo

MS SQL 服务器架构设置:

CREATE TABLE customer_profile
    ([insurance_end] datetime)
;

INSERT INTO customer_profile
    ([insurance_end])
VALUES
    ('2015-02-13 00:00:00'),
    ('2015-02-14 00:00:00'),
    ('2015-02-20 00:00:00'),
    ('2015-02-28 00:00:00'),
    ('2015-02-28 00:00:00'),
    ('2015-02-04 00:00:00'),
    ('2015-02-13 00:00:00'),
    ('2015-02-01 00:00:00'),
    ('2015-02-10 00:00:00'),
    ('2013-02-09 00:00:00')
;

查询以获得所需的输出:

SELECT * 
FROM customer_profile
WHERE CONVERT(DATE, GETDATE() -7) <= insurance_end 
  AND insurance_end <= CONVERT(DATE, GETDATE())

您还可以将 WHERE 子句更改为使用 BETWEEN:

WHERE insurance_end BETWEEN 
      CONVERT(DATE, GETDATE() -7) AND CONVERT(DATE, GETDATE())

Results:

|                   INSURANCE_END |
|---------------------------------|
| February, 13 2015 00:00:00+0000 |
| February, 14 2015 00:00:00+0000 |
| February, 20 2015 00:00:00+0000 |
| February, 13 2015 00:00:00+0000 |