0

是否可以将当天的最后一秒添加到日期中?

假设我有不同时间的日期,我需要将每个日期设置为时间 23:59:59...

可能吗?

谢谢

4

4 回答 4

6

如果@a_horse_with_no_name 提出的解决方案被证明很慢,应该可以这样做:

+1 天 -1 秒是我得到该结果的逻辑,没有字符串连接:

SELECT trunc(SYSDATE) + 1 - (INTERVAL '1' SECOND) FROM DUAL

SQL小提琴

翻译成更新

UPDATE MY_TABLE 
SET MY_DATE_COLUMN = trunc(MY_DATE_COLUMN) + 1 - (INTERVAL '1' SECOND) 

但是请记住,可维护性对于编写软件至关重要,并且阅读它比提出的其他解决方案要困难得多。

推荐阅读

于 2013-09-20T12:24:27.383 回答
5
update the_table
   set the_date_column = to_date(to_char(the_date_column, 'yyyy-mm-dd')||' 23:59:59', 'yyyy-mm-dd hh24:mi:ss');
于 2013-09-20T12:21:29.700 回答
0

是的。数据列可以存储日期值,包括带有第二个值的时间戳。像这样使用它 -

insert into tab_name
(dt)
values
(to_date('20/09/2013 17:50:50', 'DD/MM/YYYY HH24:MI:SS'));
于 2013-09-20T12:22:49.980 回答
0

如果它是 Oracle DATE 数据类型,则可以利用以下等效项:

一秒 = 0.00001

一天减去一秒 = 0.99999

例如

UPDATE mytable
SET mydatecolumn = TRUNC(mydatecolumn)+0.99999
WHERE ...;

至于可读性,一旦每个人都记住了这两个数字,阅读dt+0.99999“1天减1秒”之类的内容就成为第二天性。YMMV。

于 2013-09-24T07:39:23.380 回答