我需要添加30分钟到Oracle日期列中的值。我在我的SELECT语句中通过指定
to_char(date.and_time(.000694 * 31)
这在大多数时间工作。但不是当时间在AM / PM边界。例如,将30分钟增加到12:30 [这是PM]返回1:00,即AM。我预计的答案是13:00。什么是正确的方法这样做?
所有其他的答案基本上是正确的,但我不认为任何人直接回答你原来的问题。
假设你的例子中的“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))。
这将避免舍入误差(除了浮点固有的那些在这里应该是无意义的),并且更清楚,至少对我。