sql - 如何获得当前周的前一周?
问题描述
我正在尝试将已开始任务的周数与当前任务的前一周进行比较。
and to_char(t.plan_start_dttm, 'YYYY-IW') = to_char(sysdate-1, 'YYYY-IW')
所以昨天,它工作得很好,我得到了上周的所有记录。但是今天,我得到了本周的。显然,我的“sysdate -1 不是正确的方法。谢谢
解决方案
昨天,它工作正常,我得到了上周的所有记录。
昨天是本周的星期一;因此减去一天将是上周的星期日,而截断到一周的开始将是上周的星期一。
今天是星期二; 所以减去一天将是本周的星期一,然后截断到本周的开始仍然是本周。
相反,减去一整周的天数 (7):
and t.plan_start_dttm >= TRUNC( sysdate - 7, 'IW')
and t_plan_start_dttm < TRUNC( sysdate, 'IW' )
plan_start_dttm
如果您在一个范围内进行比较,那么 Oracle 可以在该列上使用索引;而如果您在列上使用TO_CHAR
或TRUNC
,则无法使用列索引,您将需要一个单独的基于函数的索引。
推荐阅读
- python - DJango 表中的动态字典键
- jquery - 使用 jquery 插件 SpriteSpin 如何让图像在按钮单击时旋转到某个帧?
- networking - IP 摄像机通过局域网流式传输
- python - I() 等价物(在 R 中使用),Python 等价物是什么?
- python - 为 armodel 创建矩阵,但 np.arange 返回 none 类型,即使矩阵正确。如何转换为数组?以下是我到目前为止的代码
- python - tasks.loop 15 分钟后 Webhook 令牌无效
- swift - Swift 5 CarbonKit pod 如何设置 x 轴并使 Pager 的背景颜色清晰
- python - 深度优先搜索以查找字典中的循环
- java - 使用 java 的 AWS 短信
- entity-framework-core - EF Core - 每个实体上没有联合字段的连接表