【问题标题】:how to get 30 days from Todays如何从今天获得 30 天
【发布时间】:2012-03-28 05:50:16
【问题描述】:
Select from x
    WHERE yid = rid
    AND (h.test1 <=todaysdate) AND (h.test1>= 30 days from today)

如何在查询中写下 30 天后这行?相反,我从今天开始设置一个日期或一个月。

【问题讨论】:

  • 使用 DateDiff 函数获取 30 天的差值并在查询中传递相同的值。 select DATEDIFF(DAY, '2012-03-21', GETDATE() ) 这将返回整数位
  • ...等等,您查询的行数早于今天且超过 30 天?
  • 好点@dbaseman 我没有检查清楚..
  • 我有一个@CutOffDate,它是今天...但要选择从今天开始的最后 30 天

标签: sql sql-server database datetime


【解决方案1】:

有助于了解哪个 SQL。在 MS SQL 中:

dateadd(dd, 30, todaysdate)

【讨论】:

    【解决方案2】:

    在 MySQL 中你可以这样写:

    SELECT * FROM x
    WHERE yid=r=d 
          AND h.test1 <= todaysdate
          AND h.test1 >= ADDDATE(todaysdate, INTERVAL 31 DAY);
    

    你确定你的要求吗?
    您不想要(今天之前或 30 天之后的日期):

    SELECT * FROM x
    WHERE yid=r=d 
          AND (h.test1 <= todaysdate
          OR h.test1 >= ADDDATE(todaysdate, INTERVAL 31 DAY));
    

    或(从今天到今天起 30 天之间的日期)

    SELECT * FROM x
    WHERE yid=r=d 
          AND h.test1 BETWEEN todaysdate AND ADDDATE(todaysdate, INTERVAL 31 DAY);
    

    用户评论后编辑
    在 MS SQL 中,您可以使用

    SELECT * FROM x
    WHERE yid=r=d 
          AND h.test1 BETWEEN todaysdate AND DATEADD(dd, 30, todaysdate);
    

    SELECT * FROM x
    WHERE yid=r=d 
          AND h.test1 BETWEEN DATEDIFF(dd, 30, todaysdate) AND todaysdate;
    

    请注意(正如我在评论中已经告诉您的那样)@dbaseman 为您提供了添加天数的正确语法。我的就是使用该语法的正确查询。

    用户评论后再次编辑:

    SELECT * FROM x
    WHERE yid=r=d 
          AND h.test1 BETWEEN DATEDIFF(dd, 30, NOW()) AND NOW();
    

    【讨论】:

    • 我认为这个问题不是针对 mySQL 的,那么为什么这里会发布这个答案??
    • @Murtaza: OP tagged is question SQL...这并不意味着既不是MS-SQL,也不是MySQL...我给出了mysql的答案,其他人可以添加其他sql...:)
    • 从今天到今天起 30 天之间的日期
    • @Vadz:如果您使用的是 MySql,请使用我的最后一个查询,否则请使用 @dbaseman 和 BETWEEN 语法。
    • 谢谢 Marco..但是如何把它放在 SQL 2008 报告查询中..和你刚才写的一样吗?
    【解决方案3】:


    在 Oracle 中使用 BETWEEN 以简洁明了,sysdate 用于今天的日期。

    SELECT *
      FROM x
     WHERE yid = rid AND h.test1 BETWEEN TRUNC (SYSDATE) AND TRUNC (SYSDATE) + 30;
    

    【讨论】:

    • 没有人在oracle中问过答案。请按要求回答。不要混淆他人。
    • @Murtaza sql server 标签在我回答的那一刻不存在,我不知道它必须在哪个平台上工作。所以用 oracle 的方式来回答它。
    • 和sql报告2008一样吗?
    • 不,不是。我们需要使用datediffdateadd 函数来获取SQL 中日期之间的结果
    猜你喜欢
    • 2013-12-23
    • 2016-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多