0

我正在使用 Oracle 9i 数据库,并希望在函数中获取表示一周开始的时间戳,即最近的星期一,00:00:00。

我知道代表当天开始的时间戳是TO_TIMESTAMP(SYSDATE).

4

4 回答 4

4

您可以使用该功能next_day来获得:

SQL> select next_day(sysdate-7, 'MONDAY') FROM DUAL;

NEXT_DAY
---------
29-APR-13
于 2013-04-29T22:38:25.310 回答
0

本周的开始应该可以使用trunc(请参阅文档)。

所以,

select to_timestamp(trunc(sysdate, 'D')) from dual

应该管用。

但是,根据您的 NLS 设置,oracle 一周的第一天很可能是星期日。

于 2013-04-29T22:40:05.973 回答
0

这似乎在有关星期几的午夜前的星期一返回。证明只是玩弄 sysdate 并减去天数......

select case when to_Char(sysdate,'d') = 1 then
 trunc(sysdate-6)
else 
  trunc(sysdate - (to_Char(sysdate,'d')-2))
END
  from dual;
于 2013-04-29T22:53:47.923 回答
0

您可以使用以下命令将日期截断为星期一:

select trunc(sysdate, 'IW') FROM DUAL;
于 2013-08-15T13:58:37.760 回答