是否有可能将当天的最后一天添加到日期?
假设我有不同时间的约会,我需要每个日期设定时间23:59:59 ......
有可能吗?
由于
答案 0 :(得分:6)
如果solution proposed by @a_horse_with_no_name证明速度慢,应该可以这样做:
+1天-1秒是我得到的逻辑,没有字符串连接:
SELECT trunc(SYSDATE) + 1 - (INTERVAL '1' SECOND) FROM DUAL
转换为UPDATE
UPDATE MY_TABLE
SET MY_DATE_COLUMN = trunc(MY_DATE_COLUMN) + 1 - (INTERVAL '1' SECOND)
然而请记住,可维护性对于编写软件至关重要,阅读本文比提出的其他解决方案要困难得多。
答案 1 :(得分: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');
答案 2 :(得分:0)
是。数据列可以存储日期值,包括带有第二个值的时间戳。像这样使用它 -
insert into tab_name
(dt)
values
(to_date('20/09/2013 17:50:50', 'DD/MM/YYYY HH24:MI:SS'));
答案 3 :(得分:0)
如果它是Oracle DATE数据类型,您可以利用以下等价:
一秒= 0.00001
一天减去一秒= 0.99999
e.g。
UPDATE mytable
SET mydatecolumn = TRUNC(mydatecolumn)+0.99999
WHERE ...;
至于可读性,一旦每个人都记住了这两个数字,那么将dt+0.99999
这样的内容读作“1天少于1秒”就成了第二天性。 YMMV。