【发布时间】:2014-07-08 15:37:39
【问题描述】:
我有一个带有时间戳字段的表。在 Postgresql 中,我必须在本月的第一个星期日到下个月的第一个星期六之间定义一个“营业月”(例如 2014-04-06 到 2014-05-03 将是“2014 年 4 月”)。
我不太确定从哪里开始。到目前为止,我得到的是来自this forum post(使用 T-SQL)的第一个星期日。
--first sunday of this month....
-1=sunday,-2=saturday,-3-friday etc
SELECT
datename(dw,dateadd(dd,-1,DATEADD(wk,
DATEDIFF(wk,0,dateadd(dd,7-datepart(day,getdate()),getdate())), 0))),
dateadd(dd,-1,DATEADD(wk,
DATEDIFF(wk,0,dateadd(dd,7-datepart(day,getdate()),getdate())), 0))
我可能需要建立一个日历表并手动定义月份。但我想探索其他解决方案。
【问题讨论】:
-
没有比日历表更好的解决方案了。
-
我也强烈推荐一个日历表。当您开始处理复杂的日期操作时,很容易搞砸您的逻辑并且直到投入生产数月(甚至数年)后才注意到它。闰年是一个特别常见的错误来源。如果是我,我肯定会为此创建一个日历表。这将比使用逻辑表达式处理日期更直接。
标签: sql postgresql date datetime calendar