上周日到下周六的 DB2 语句之间

Posted

技术标签:

【中文标题】上周日到下周六的 DB2 语句之间【英文标题】:DB2 Between Statement for Last Sunday to This Coming Saturday 【发布时间】:2016-01-27 21:23:41 【问题描述】:

我很好奇为什么这不起作用:

SELECT *
FROM TABLE
WHERE DATE_TIME_COLUMN BETWEEN
    current date - int((dayofweek(current date))-1)
    AND
    current date + int(7-(dayofweek(current date)))

当这正是我想要的:

select current date - int((dayofweek(current date))-1) days from sysibm.sysdummy1)
select current date + int(7-(dayofweek(current date))) days from sysibm.sysdummy1)

以上两个将产生我希望我的特定日期时间列介于两者之间的正确日期。我在这里错过了什么?

【问题讨论】:

【参考方案1】:
SELECT *
FROM TABLE
WHERE DATE_TIME_COLUMN BETWEEN
current date - ((dayofweek(current date))-1) DAYS
AND
current date + (7-(dayofweek(current date))) DAYS

如上所示,您必须表明您正在从当前日期减少 DAYS。

【讨论】:

【参考方案2】:

“不起作用”有点模糊:)。您的第一个查询缺少 DAY 部分来告诉 DB2 您正在对哪部分进行日期数学运算。

不过,听起来您可能想使用WEEK 标量函数:

SELECT *
FROM TABLE
WHERE WEEK(DATE_TIME_COLUMN) = WEEK(CURRENT_DATE)
  AND YEAR(DATE_TIME_COLUMN) = YEAR(CURRENT_DATE)

【讨论】:

以上是关于上周日到下周六的 DB2 语句之间的主要内容,如果未能解决你的问题,请参考以下文章

选择上周内的日期

SQL语句怎么查周六周天

LINUX下shell脚本如何执行 sql脚本 到DB2数据库?

DB2备份还原中常用的sql语句

不重建表的情况下,db2里面,decimal(10) 怎么转变为decimal(10,2) 请写语句

db2存储过程