简体   繁体   English

没有将来的日期SQL查询

[英]No future date SQL Query

Below is a query that tags the order_date either in the 'less than 14 days' or 'less than 30 days' section. 以下是在“少于14天”或“少于30天”部分标记order_date的查询。 There's one order date that's a future date and it's also included in 'less than 14 days'. 有一个订单日期是将来的日期,并且还包含在“少于14天”中。

I tried the following: 我尝试了以下方法:

WHEN DATEDIFF(DD,OH.order_date, GETDATE()) < 14 AND DATEDIFF(DD,OH.order_date, GETDATE()) < GETDATE() THEN 'Less than 14 days'

Future date is still there. 未来的日期仍然在那里。 Please advise 请指教

Original code: 原始代码:

SELECT CS.cust_id, OH.order_date,
    CASE
    WHEN DATEDIFF(DD,OH.order_date, GETDATE()) < 14 THEN 'Less than 14 days'
    WHEN DATEDIFF(DD,OH.order_date, GETDATE()) < 30 THEN 'Less than 30 days'
    END
 AS 'orderAge'
FROM customers AS CS
INNER JOIN order_headers AS OH ON OH.cust_id = CS.cust_id
ORDER BY cust_id, order_date;
    SELECT CS.cust_id, OH.order_date,
        CASE
        WHEN DATEDIFF(DD,OH.order_date, GETDATE()) < 0 THEN 'Future date'
        WHEN DATEDIFF(DD,OH.order_date, GETDATE()) < 14 THEN 'Less than 14 days'
        WHEN DATEDIFF(DD,OH.order_date, GETDATE()) < 30 THEN 'Less than 30 days'
        END
     AS 'orderAge'
    FROM customers AS CS
    INNER JOIN order_headers AS OH ON OH.cust_id = CS.cust_id
    ORDER BY cust_id, order_date;

Try your code but use 0 as a boundary point. 尝试您的代码,但使用0作为边界点。 You want positive return values of the DATEDIFF function only. 您只需要DATEDIFF函数的正返回值。

WHEN DATEDIFF(DD,OH.order_date, GETDATE()) < 14 AND DATEDIFF(DD,OH.order_date, GETDATE()) > 0 THEN 'Less than 14 days'

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM