[英]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.