如何将最后一秒添加到日期?

时间:2013-09-20 12:18:17

标签: sql oracle

是否有可能将当天的最后一天添加到日期?

假设我有不同时间的约会,我需要每个日期设定时间23:59:59 ......

有可能吗?

由于

4 个答案:

答案 0 :(得分:6)

如果solution proposed by @a_horse_with_no_name证明速度慢,应该可以这样做:

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

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

SQL fiddle

转换为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。