sysdate 差异(如何在 sysdate 和我的表日期之间进行查询)
Posted
技术标签:
【中文标题】sysdate 差异(如何在 sysdate 和我的表日期之间进行查询)【英文标题】:sysdate difference ( how to make query between sysdate and my table date) 【发布时间】:2015-12-19 13:39:46 【问题描述】:我是 Oracle 新手。
我有一些问题要查询。
我正在尝试进行查询以解决 sysdate() 与我自己表中的日期之间的差异
select to_char(to_char(sysdate,'YYYYMMDDHH24MISS')
- to_char(S_DATE||S_HOUR||':00' , 'YYYYMMDDHH24MISS'))
from dual;
我就是这么干的。
在我的表格中,我有两列 'S_DATE'
和 'S_HOUR'
,这意味着时间。
所以,我想知道时差以及如何进行此查询。 提前谢谢你。
【问题讨论】:
为什么不将您的日期存储为日期?那么不需要转换。只需减去两个值。刚接触 Oracle 的人通常不明白的一件事是日期。日期是时间点 - 所以日期和时间。始终将日期存储为日期,而不是数字或字符串。 您不能从另一个 varchar 中“减去”一个 varchar。您需要使用 realdate
值。去掉 sysdate 上的 to_char()
并在表列上使用 to_date()
将它们转换为正确的 date
值。
【参考方案1】:
您可以通过简单的 -(减号)运算符获得两个日期之间的差异。但是首先您需要使用 TO_DATE
将日期字符串转换为日期。
SQL Fidlle 中的示例是here
示例查询:
select
sysdate , S_DATE || ' ' || S_HOUR "Date",
round((sysdate - to_date(s_date || s_hour ,' YYYY/MM/DDHH24:MI') ) * 24 * 60, 2) "Dif In Min",
round((sysdate - to_date(s_date || s_hour ,' YYYY/MM/DDHH24:MI') ) * 24 * 60 * 60, 2) "Dif In Sec"
from myDate
【讨论】:
以上是关于sysdate 差异(如何在 sysdate 和我的表日期之间进行查询)的主要内容,如果未能解决你的问题,请参考以下文章
如何生成 sysdate-30 和 sysdate+30 之间的所有日期列表?
SYSDATE 和以 MM-DD 格式存储的日期之间的日期差异
oracle systimestamp (sysdate) 到毫秒