gpt4 book ai didi

sql - 获取每月的第一天(和最后一天) - 表达式简化

转载 作者:行者123 更新时间:2023-12-01 22:58:29 28 4
gpt4 key购买 nike

我需要获取日期,即当前(和上一个)月份的第一天之前的 30 天(以后我还将使用 90 或 18O)天。我写了这个,但我认为它不必要地复杂,所以我来这里寻求帮助。无论如何,我该如何简化:

ib_encodedate(EXTRACT(YEAR from (dateadd(-30-datediff(day from cast(EXTRACT(MONTH from CURRENT_DATE) 
|| '-1-'
|| EXTRACT(YEAR from CURRENT_DATE) as date) to date 'now') DAY to CURRENT_DATE))), EXTRACT(MONTH from (dateadd(-30-datediff(day from cast(EXTRACT(MONTH from CURRENT_DATE)
|| '-1-'
|| EXTRACT(YEAR from CURRENT_DATE) as date) to date 'now') DAY to CURRENT_DATE))),EXTRACT(DAY from (dateadd(-30-datediff(day from cast(EXTRACT(MONTH from CURRENT_DATE)
|| '-1-'
|| EXTRACT(YEAR from CURRENT_DATE) as date) to date 'now') DAY to CURRENT_DATE))))

在数据库中,我在 double 中有日期,所以我必须使用函数 ib_encodedate将日期转换为 double并与数据库中的日期进行比较。函数有原型(prototype):
ib_encodedate(INT year, INT month, INT day)

我需要为每个月的最后一天写同样的内容。

谢谢你的帮助。

最佳答案

好像你需要这样的东西:

SELECT
DATEADD (-EXTRACT(DAY FROM CURRENT_DATE)+1 DAY TO CURRENT_DATE) AS FIRST_DAY_OF_MONTH,
DATEADD (-30 DAY TO DATEADD (-EXTRACT(DAY FROM CURRENT_DATE)+1 DAY TO CURRENT_DATE)) AS A_MONTH_AGO,
DATEADD (-90 DAY TO DATEADD (-EXTRACT(DAY FROM CURRENT_DATE)+1 DAY TO CURRENT_DATE)) AS THREE_MONTHS_AGO,
DATEADD (-180 DAY TO DATEADD (-EXTRACT(DAY FROM CURRENT_DATE)+1 DAY TO CURRENT_DATE)) AS SIX_MONTHS_AGO
FROM
RDB$DATABASE

使用函数 DATEADD从火鸟你可以很容易地做到这一点。

关于sql - 获取每月的第一天(和最后一天) - 表达式简化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22306559/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com