【问题标题】:Oracle Sql adding hours and minute to a to_date while insert statmentOracle Sql 在插入语句时向日期添加小时和分钟
【发布时间】:2020-11-04 15:26:43
【问题描述】:

您好,我正在尝试创建一个插入语句,其中包括将 2 小时 10 分钟添加到 to_date 。

但我不知道我可以使用哪个功能。

这是我目前为止的声明

insert into xyz values (TO_DATE('22-Oct-2020 11:00 AM', 'DD-MM-YYYY HH:MI AM')) 

但我想在插入时在上面添加 2 小时 10 分钟。

【问题讨论】:

  • 如果我只想添加天数,我需要使用什么功能?
  • 注意,格式MM实际上是指月份数。正确的语法是 TO_DATE('22-Oct-2020 11:00 AM', 'DD-Mon-YYYY HH:MI AM', 'NLS_DATE_LANGUAGE=American')

标签: sql oracle datetime sql-insert date-arithmetic


【解决方案1】:

使用日期算术。在 Oracle 中,您可以将十进制值添加到日期(1 代表“1 天”):

insert into xyz 
values (
    to_date('22-Oct-2020 11:00 AM', 'DD-MM-YYYY HH:MI AM') 
    + 2/24 + 10 / 60 / 24
)

或者:

insert into xyz 
values (
    to_date('22-Oct-2020 11:00 AM', 'DD-MM-YYYY HH:MI AM') 
    + interval '2' hour + interval '10' minute
)

或者(归功于 Wernfried Domscheit):

insert into xyz 
values (
    to_date('22-Oct-2020 11:00 AM', 'DD-MM-YYYY HH:MI AM') 
    + interval '2:10' hour to minute
)

【讨论】:

  • 你也可以写+ interval '2:10' hour to minute
  • 这会自动将 AM 更改为 PM 吗?
  • @WernfriedDomscheit:是的,确实如此。为了完整起见,我将其添加到我的答案中。谢谢!
  • 非常感谢,我花了很多时间尝试 addtime、dateadd() 等。
【解决方案2】:

您也可以使用interval

insert into xyz values (TO_DATE('22-Oct-2020 11:00 AM', 'DD-MM-YYYY HH:MI AM') + interval '130' minute);
       
        
select TO_DATE('22-Oct-2020 11:00 AM', 'DD-MM-YYYY HH:MI AM') + interval '130' minute from dual;
    
TO_DATE('22-OCT-202
-------------------
22-10-2020 01:10 PM
       

select TO_DATE('22-Oct-2020 11:00 AM', 'DD-MM-YYYY HH:MI AM') + interval '1' day from dual;
    
TO_DATE('22-OCT-202
-------------------
23-10-2020 11:00 AM

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-19
    • 2018-12-25
    • 2011-10-07
    相关资源
    最近更新 更多