sql - Firebird 3 中一周最后一天的日期
问题描述
这是 Firebird 3 中一周的第一天(星期一)的日期:
DATEADD(DAY, (EXTRACT(WEEKDAY FROM D - 1) * -1), D)
以及如何获取一周中最后一天(星期日)的日期?
在 Firebird 中:周一 = 1,周二 = 2,...周日 = 0。
解决方案
对于 ISO-8601 周,星期一是一周的第一天,您还可以使用以下方法确定星期一:
dateadd(day, 0 - mod(extract(weekday FROM d) + 6, 7), d)
使用mod(extract(weekdays from d) + 6, 7)
将使星期一 0、星期二 1 等和星期日 6 更容易计算。
然后,您可以使用以下方法确定星期日:
dateadd(day, 6 - mod(extract(weekday FROM d) + 6, 7), d)
您可以通过这种方式轻松得出一周中的其他日子(例如1 - mod(extract(weekday FROM d) + 6, 7)
,用于星期二等。
另一方面,如果星期日是一周的第一天(例如在美国),您可以使用:
dateadd(day, 0 - extract(weekday from d), d)
周一
dateadd(day, 1 - extract(weekday from d), d)
推荐阅读
- javascript - 在通过单击复制的 div 中放置小的“已复制”确认
- php - PHP无法获取函数返回变量的值
- c++ - 我没能用网络 ts 重写 boost::asio 教程。我的代码有什么问题?
- redirect - Barba.js - 如果发生 PHP 重定向,则更新 URL
- mysql - 如何对列内的字段求和?
- flutter - Flutter Web:错误:不支持的操作:Platform._operatingSystem
- python - Docker 下 Python 中的 Selenium Chrome Web 驱动程序 - 等待下载过程完成
- c++ - 具有释放-获取内存排序的半无锁 spsc 队列
- javascript - 使用 react-native-track-player 从 flatlist 播放选定的歌曲
- php - 来自win do unix的ssh2 scp通过php不起作用