如何在 Oracle 的日期中添加一天的最后一小时?

Posted

技术标签:

【中文标题】如何在 Oracle 的日期中添加一天的最后一小时?【英文标题】:How to add last hour of a day in a Date in Oracle? 【发布时间】:2020-10-18 11:36:40 【问题描述】:

我的日期字段中有一个日期,例如 2020 年 10 月 14 日。现在我想获取日期并添加小时、分钟和秒,该日期应该是该日期的最后一个小时,例如 10/14/2020 11:59:59 PM

【问题讨论】:

【参考方案1】:

将日期值截断回午夜(以防万一存在非午夜时间分量),然后添加23:59:59 的间隔:

SELECT TRUNC( your_date_value ) + INTERVAL '23:59:59' HOUR TO SECOND
         AS last_second_of_day
FROM   your_table;

或加 1 天减 1 秒:

SELECT TRUNC( your_date_value ) + INTERVAL '1' DAY - INTERVAL '1' SECOND
         AS last_second_of_day
FROM   your_table;

或添加86399秒:

SELECT TRUNC( your_date_value ) + INTERVAL '86399' SECOND
         AS last_second_of_day
FROM   your_table;

SELECT TRUNC( your_date_value ) + 86399 / 86400
         AS last_second_of_day
FROM   your_table;

(但是使用间隔更明确地说明它们的含义,而使用幻数可能在您查看 6 个月后的代码时不清楚。)

那么,对于样本数据:

CREATE TABLE your_table ( your_date_value ) AS
SELECT DATE '2020-10-14' FROM DUAL UNION ALL
SELECT DATE '2020-01-01' + INTERVAL '12' HOUR FROM DUAL;

查询全部输出:

| LAST_SECOND_OF_DAY | | :----------------- | | 2020-10-14 23:59:59 | | 2020-01-01 23:59:59 |

db小提琴here

【讨论】:

以上是关于如何在 Oracle 的日期中添加一天的最后一小时?的主要内容,如果未能解决你的问题,请参考以下文章

如何在特定小时的滚动平均值的熊猫数据框中添加一列

Codeigniter 如何在用户的注册日期中添加一年

在mysql数据库中添加一整月的日期

用SQL获取某个某年某个月份的最后一天的日期

oracle 日期函数当前日期的前30天的日期

sql 表中添加一列并将这一列赋值?