【问题标题】:count the number of days of current month from day 1 until yesterday从第一天到昨天计算当前月份的天数
【发布时间】:2020-05-09 18:17:16
【问题描述】:

我正在尝试计算从第一天到昨天的当前月份的天数,而无需手动更改计数。原SQL如下:

select order_id 
from orders 
where date > dateadd(-23 to current_date) and date < 'today'

所需的代码类似于

select order_id 
from orders 
where date > dateadd(datediff(day,firstdayofthemonth,current_date) to current_date) and date < 'today'

感谢任何帮助

【问题讨论】:

  • 我注意到这与您之前的问题非常相似:Get last month data from first day until last day in Firebird
  • 您询问“从第 1 天到昨天的当前月份的天数”。 只是为了澄清一下,当查询在 1 日运行时,您希望发生什么一个月?那么“昨天”将不再是“当前月份”。你想要零结果吗?您想要上个月的全部内容吗?

标签: sql date datetime select firebird


【解决方案1】:

在 firebird 中你可以这样做:

WHERE 
    date >= DATEADD(1 - EXTRACT(DAY FROM CURRENT_DATE) DAY TO CURRENT_DATE) 
    AND date < CURRENT_DATE

【讨论】:

    【解决方案2】:

    除了Mark提供的答案,还可以使用BETWEEN(从Firebird 2.0.4开始)

    WHERE 
       date BETWEEN current_date - extract(day from current_date) + 1 
                AND current_date - 1
    

    附:所有这些答案都依赖于没有时间部分的DATE 数据类型(因此,date 列和CURRENT_DATE 变量)。这是为现代 SQL 方言 3 给出的。但如果方言 1 会被使用,则不会给出。

    【讨论】:

      【解决方案3】:

      除了GMB提供的答案外,你还可以使用Firebird允许在日期上添加天数而无需使用dateadd的事实:

      date > current_date - extract(day from current_date) 
      and date < current_date
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多