【问题标题】:DB2 - Select values based on number of days in current monthDB2 - 根据当月的天数选择值
【发布时间】:2016-07-20 03:34:26
【问题描述】:

我有如下表。

表名(问题):

ID  ISSUE_ID  CREATED_DATE 
1   101       15 July 2016 
2   102       13 July 2016 
3   103       10 July 2016 
4   104       8 July 2016  
5   103       7 July 2016  
6   104       19 June 2016 
7   103       10 June 2016 
8   104       1 June 2016  

我想根据当月的天数检索过去 30/31/28 天打开的问题数(计数)。

例如, 在 7 月份,我们有 31 天,所以我想检索过去 31 天内打开的问题。

如果是 6 月,我们只有 30 天,所以我必须检索过去 30 天内打开的问题。

在 DB2 中,可以通过

检索本月的天数
DAY(LAST_DAY(DATE(current timestamp)))

我仍然对如何将其应用于查询感到困惑。 我对查询的了解非常有限。

提前致谢。

以下查询无效。

SELECT 
  count(*)
  FROM issues
WHERE
  MONTH(CREATED_DATE) > (MONTH( DATE(current timestamp) ) - 1 MONTH)
  AND 
  DAY(DATE (CREATED_DATE)) > DAY(DATE(current timestamp))

【问题讨论】:

    标签: db2


    【解决方案1】:

    你可以用数值代替天数。

    基本的时间选择

    select * from sometable where somedate > current date - 31 days
    

    使用函数选择天数。

    select * from sometable where somedate > current date -
    
    DAY(LAST_DAY(DATE(current timestamp))) days
    

    但我们大多数人都会选择一个月后一个月

    select * from sometable where somedate > current date - 1 months
    

    注意:我发现后 N 天唯一有用的地方是在星期一或节假日从周末取出东西。

    【讨论】:

      【解决方案2】:

      你可以试试这个。

      SELECT 
        count(*)
        FROM issues
      WHERE CREATED_DATE>DAY(LAST_DAY(CURRENT_DATE))
      

      如果 CREATED_DATE 不是日期格式。试试这个

      SELECT 
      count(*)
      FROM issues
      WHERE TO_DATE('CREATED_DATE', 'DD MONTH YYYY')>DAY(LAST_DAY(CURRENT_DATE))
      

      【讨论】:

        猜你喜欢
        • 2013-01-20
        • 2010-11-06
        • 1970-01-01
        • 2014-05-22
        • 1970-01-01
        • 1970-01-01
        • 2014-11-02
        • 2020-07-02
        • 2019-08-29
        相关资源
        最近更新 更多