当前位置:  开发笔记 > 数据库 > 正文

Oracle:如何在时间戳上添加分钟?

如何解决《Oracle:如何在时间戳上添加分钟?》经验,为你挑选了5个好方法。

我需要在Oracle日期列中添加30分钟的值.我通过指定在SELECT语句中执行此操作

to_char(date_and_time + (.000694 * 31)

这在大多数时候都很好.但是当时间在AM/PM边界时.例如,向12:30[PM] 添加30分钟将返回1:00AM.我期待的答案是13:00.这样做的正确方法是什么?



1> Justin Cave..:

除了能够将日期添加到日期之外,您可以使用间隔数据类型,假设您已启用Oracle 9i或稍后,这可能更容易阅读,

SQL> ed
Wrote file afiedt.buf
SELECT sysdate, sysdate + interval '30' minute FROM dual
SQL> /

SYSDATE              SYSDATE+INTERVAL'30'
-------------------- --------------------
02-NOV-2008 16:21:40 02-NOV-2008 16:51:40


+1哇,我从来不知道这一点......我终于可以放弃一天中可笑的部分!
这真的很有帮助,并且鉴于它已经收到的赞成票,可能应该是接受的答案.

2> Dave Costa..:

所有其他答案基本上都是正确的,但我认为没有人直接回答你原来的问题.

假设您的示例中的"date_and_time"是类型为DATE或TIMESTAMP的列,我认为您只需要更改它:

to_char(date_and_time + (.000694 * 31))

对此:

to_char(date_and_time + (.000694 * 31), 'DD-MON-YYYY HH24:MI')

听起来您的默认日期格式使用小时的"HH"代码,而不是"HH24".

此外,我认为你的常数术语既令人困惑又不精确.我猜你所做的是计算(.000694)大约是一分钟的值,并且你将它乘以你想要添加的分钟数(在示例中为31,尽管你在文中说了30).

我也会从一天开始,然后将其划分为代码中所需的单位.在这种情况下,(1/48)将是30分钟; 或者如果你想打破清晰度,你可以写((1/24)*(1/2)).

这样可以避免舍入错误(除了浮点中固有的错误,这里没有意义)并且更清楚,至少对我而言.


不要忘记看到40+以上的答案:)

3> 小智..:

来自http://www.orafaq.com/faq/how_does_one_add_a_day_hour_minute_second_to_a_date_value

SYSDATE伪列显示当前系统日期和时间.将1添加到SYSDATE将使日期提前1天.使用分数将日期,分钟或秒添加到日期

SQL> select sysdate, sysdate+1/24, sysdate +1/1440, sysdate + 1/86400 from dual;

SYSDATE              SYSDATE+1/24         SYSDATE+1/1440       SYSDATE+1/86400
-------------------- -------------------- -------------------- --------------------
03-Jul-2002 08:32:12 03-Jul-2002 09:32:12 03-Jul-2002 08:33:12 03-Jul-2002 08:32:13



4> jtomaszk..:
UPDATE "TABLE" 
SET DATE_FIELD = CURRENT_TIMESTAMP + interval '48' minute 
WHERE (...)

其中interval一个

小时

分钟

第二



5> a_horse_with..:

我更喜欢使用interval文字,因为interval '30' minute或者interval '5' second更容易阅读30 / (24 * 60)或更容易阅读5 / (24 * 60 * 69)

例如

some_date + interval '2' hour

some_date + interval '30' minute

some_date + interval '5' second

some_date + interval '2' day

您还可以将多个单元组合成一个表达式:

some_date + interval '2 3:06' day to minute

在日期值上添加2天,3小时和6分钟

以上也是标准SQL,也适用于其他几个DBMS.

手册中的更多细节:https://docs.oracle.com/database/121/SQLRF/sql_elements003.htm#SQLRF00221

推荐阅读
李桂平2402851397
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有