【问题标题】:SQL SELECT date from table, and calculate how many days since that dateSQL 从表中选择日期,并计算自该日期以来的天数
【发布时间】:2016-10-20 05:06:35
【问题描述】:

我正在计算从我数据库中的表中检索到的特定日期以来已经过去了多少天。根据我在 W3Schools (Here) 上找到的信息,我尝试使用 DATEDIFF,但遇到了一些我似乎无法解决的不同错误。

我在下面包含了我的代码,基于此,我想要发生的是:从“Wave_Data”表中选择“DD”,然后根据“sysdate”计算已经过去了多少天从那时起。

SELECT DATEDIFF(WEEKDAY,:P1_DD,SYSDATE)
FROM WAVE_DATA
WHERE WAVE_NUMBER = :P1_WAVE;

然后将最终计算输入到我的 ApEx 数据库中的文本字段中。

提前感谢您提供的任何帮助,

多米尼克

【问题讨论】:

  • 你遇到了什么错误?
  • 几个不同的,但最近/当前的错误是:无法解析 SQL 查询! ORA-00904: "DATEDIFF": 标识符无效
  • 如果这是Oracle,看起来像,你可以减去日期。类似于this
  • 标记你正在使用的数据库。
  • DATEDIFF 不是有效的 Oracle 函数

标签: sql oracle date datediff days


【解决方案1】:

在 Oracle 中,您只需从另一个日期中减去一个日期即可获得它们之间的差异(以天为单位):

SELECT SYSDATE - :p1_dd
FROM   Wave_Data
WHERE  Wave_Number = :p1_wave;

如果您想知道没有任何时间部分的日期之间的差异,那么您可以这样做:

SELECT TRUNC( SYSDATE ) - TRUNC( :p1_dd )
FROM   Wave_Data
WHERE  Wave_Number = :p1_wave;

SELECT FLOOR( SYSDATE - :p1_dd )
FROM   Wave_Data
WHERE  Wave_Number = :p1_wave;

【讨论】:

  • 应该是 sysdate - :p1_dd 吗?
  • 这(几乎)完美地工作!我在那里添加了一个“TO_DATE”,我很高兴去!此外,有没有办法说“只有在 P1_DD 过去时才这样做”?不过,可能会推动友谊!
  • CASE WHEN :p1_dd < SYSDATE THEN SYSDATE - :p1_dd END 将在过去或NULL 否则得到差异。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-12
  • 2021-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-13
相关资源
最近更新 更多