如何将 CASE 与日期 INTERVAL 一起使用?

发布于 2024-10-01 13:30:04 字数 566 浏览 0 评论 0原文

我想要这个查询:

SELECT DATE(DATE_SUB(DATE('2010-09-10'), (CASE DATETYPE WHEN 'H' THEN INTERVAL 1 WEEK ELSE INTERVAL 1 YEAR END CASE))) AS wdt 

MySQL 说它无效,

我也尝试过,

 SELECT _DATE AS wdt 
 UNION ALL 
 CASE DATETYPE
        WHEN 'H' THEN SELECT DATE(DATE_SUB(_DATE, INTERVAL 1 YEAR)) AS wdt ;
        ELSE SELECT DATE(DATE_SUB(DATE('2010-09-10'), INTERVAL 1 WEEK )) AS wdt;
  END CASE;
  UNION ALL 
  SELECT DATE(DATE_SUB(_DATE, INTERVAL 2 WEEK)) AS wdt 

这也不起作用,查询语法错误。

如何为假期日期选择间隔 1 年。

I want to have this query:

SELECT DATE(DATE_SUB(DATE('2010-09-10'), (CASE DATETYPE WHEN 'H' THEN INTERVAL 1 WEEK ELSE INTERVAL 1 YEAR END CASE))) AS wdt 

MySQL says it's invalid

also I have tried

 SELECT _DATE AS wdt 
 UNION ALL 
 CASE DATETYPE
        WHEN 'H' THEN SELECT DATE(DATE_SUB(_DATE, INTERVAL 1 YEAR)) AS wdt ;
        ELSE SELECT DATE(DATE_SUB(DATE('2010-09-10'), INTERVAL 1 WEEK )) AS wdt;
  END CASE;
  UNION ALL 
  SELECT DATE(DATE_SUB(_DATE, INTERVAL 2 WEEK)) AS wdt 

which doesn't work also, error in query syntax.

How can I select interval 1 year for dates that are Holidays.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

森林散布 2024-10-08 13:30:04

使用两个 DATE_SUB 操作可以工作:

SELECT IF (DATETYPE  = 'H', 
           DATE_SUB(DATE('2010-09-10'), INTERVAL 1 WEEK),
           DATE_SUB(DATE('2010-09-10'), INTERVAL 1 YEAR)) 
       as wdt;

Using two DATE_SUB operations would work:

SELECT IF (DATETYPE  = 'H', 
           DATE_SUB(DATE('2010-09-10'), INTERVAL 1 WEEK),
           DATE_SUB(DATE('2010-09-10'), INTERVAL 1 YEAR)) 
       as wdt;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文