Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 计算从第1天到昨天的当月天数_Sql_Date_Datetime_Select_Firebird - Fatal编程技术网

Sql 计算从第1天到昨天的当月天数

Sql 计算从第1天到昨天的当月天数,sql,date,datetime,select,firebird,Sql,Date,Datetime,Select,Firebird,我正在尝试计算当前月份从第1天到昨天的天数,而无需手动更改计数。原始SQL语句如下所示: select order_id from orders where date > dateadd(-23 to current_date) and date < 'today' 选择订单\u id 从命令 其中日期>日期添加(-23到当前日期)和日期日期添加(datediff(day,每月第一天,当前日期)到当前日期)和日期=日期添加(1-提取(从当前日期开始的日期)到当前日期的日期) 和

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

select order_id 
from orders 
where date > dateadd(-23 to current_date) and date < 'today'
选择订单\u id
从命令
其中日期>日期添加(-23到当前日期)和日期<'today'
所需的代码类似于

select order_id 
from orders 
where date > dateadd(datediff(day,firstdayofthemonth,current_date) to current_date) and date < 'today'
选择订单\u id
从命令
其中日期>日期添加(datediff(day,每月第一天,当前日期)到当前日期)和日期<'today'

感谢您对firebird的帮助,您可以:

WHERE 
    date >= DATEADD(1 - EXTRACT(DAY FROM CURRENT_DATE) DAY TO CURRENT_DATE) 
    AND date < CURRENT_DATE
在哪里
日期>=日期添加(1-提取(从当前日期开始的日期)到当前日期的日期)
和日期<当前日期

在firebird中,您可以执行以下操作:

WHERE 
    date >= DATEADD(1 - EXTRACT(DAY FROM CURRENT_DATE) DAY TO CURRENT_DATE) 
    AND date < CURRENT_DATE
在哪里
日期>=日期添加(1-提取(从当前日期开始的日期)到当前日期的日期)
和日期<当前日期

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

date > current_date - extract(day from current_date) 
and date < current_date
date>current_date-提取(从当前_日期算起的日期)
和日期<当前日期

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

date > current_date - extract(day from current_date) 
and date < current_date
date>current_date-提取(从当前_日期算起的日期)
和日期<当前日期

除了Mark提供的答案外,您还可以在之间使用
(从Firebird 2.0.4开始)

另外,所有这些答案都依赖于没有时间部分的
日期
数据类型(因此,
日期
列和
当前日期
变量)。这是为现代SQL方言3提供的。但如果方言1会被使用,则不会给出


除了Mark提供的答案外,您还可以在
之间使用
(从Firebird 2.0.4开始)

另外,所有这些答案都依赖于没有时间部分的
日期
数据类型(因此,
日期
列和
当前日期
变量)。这是为现代SQL方言3提供的。但如果方言1会被使用,则不会给出


我注意到这与您前面的问题非常相似:您询问的是“从第一天到昨天的当月天数”。只是想澄清一下,当查询在一个月的第一天运行时,您希望发生什么?那么“昨天”将不再是“当前月份”。你想要零结果吗?你想要完整的上个月吗?我注意到这与你之前的问题很相似:你问的是“本月的第1天到昨天”。只是想澄清一下,当查询在一个月的第一天运行时,您希望发生什么?那么“昨天”将不再是“当前月份”。你想要零结果吗?你想要完整的上个月吗?