是否可以将当天的最后一秒添加到日期中?
假设我有不同时间的日期,我需要将每个日期设置为时间 23:59:59...
可能吗?
谢谢
如果@a_horse_with_no_name 提出的解决方案被证明很慢,应该可以这样做:
+1 天 -1 秒是我得到该结果的逻辑,没有字符串连接:
SELECT trunc(SYSDATE) + 1 - (INTERVAL '1' SECOND) FROM DUAL
翻译成更新
UPDATE MY_TABLE
SET MY_DATE_COLUMN = trunc(MY_DATE_COLUMN) + 1 - (INTERVAL '1' SECOND)
但是请记住,可维护性对于编写软件至关重要,并且阅读它比提出的其他解决方案要困难得多。
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');
是的。数据列可以存储日期值,包括带有第二个值的时间戳。像这样使用它 -
insert into tab_name
(dt)
values
(to_date('20/09/2013 17:50:50', 'DD/MM/YYYY HH24:MI:SS'));
如果它是 Oracle DATE 数据类型,则可以利用以下等效项:
一秒 = 0.00001
一天减去一秒 = 0.99999
例如
UPDATE mytable
SET mydatecolumn = TRUNC(mydatecolumn)+0.99999
WHERE ...;
至于可读性,一旦每个人都记住了这两个数字,阅读dt+0.99999
“1天减1秒”之类的内容就成为第二天性。YMMV。