首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Oracle:如何在时间戳中添加分钟?

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

Stack Overflow用户
提问于 2008-11-02 20:34:32
回答 11查看 267.4K关注 0票数 44

我需要为Oracle date列中的值添加30分钟。我在SELECT语句中通过指定

to_char(date_and_time + (.000694 * 31)

这在大多数情况下都工作得很好。但不是当时间在AM/PM边界时。例如,将30分钟添加到为PM的12:30将返回为AM的1:00我期望的答案是13:00。这样做的正确方法是什么?

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2008-11-03 12:59:46

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

假设您示例中的"date_and_time“是一个类型为DATE或TIMESTAMP的列,我认为您只需要更改以下内容:

代码语言:javascript
复制
to_char(date_and_time + (.000694 * 31))

要这样做:

代码语言:javascript
复制
to_char(date_and_time + (.000694 * 31), 'DD-MON-YYYY HH24:MI')

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

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

我也会从一天开始,并在代码中将其划分为您想要的单位。在这种情况下,(1/48)将是30分钟;或者,如果为了清楚起见,您可以将其分解,可以写成( (1/24) * (1/2) )。

这将避免舍入误差(除了那些浮点中固有的,在这里应该是没有意义的),而且更清楚,至少对我来说是这样。

票数 30
EN

Stack Overflow用户

发布于 2008-11-02 21:22:39

除了能够将天数添加到日期之外,您还可以使用间隔数据类型,假设您使用的是Oracle 9i或更高版本,这样会更容易阅读,

代码语言:javascript
复制
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
票数 138
EN

Stack Overflow用户

发布于 2010-02-22 21:14:26

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

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

代码语言:javascript
复制
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
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/257324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档