减去日期并仅在 SQL 中显示整数

Posted

技术标签:

【中文标题】减去日期并仅在 SQL 中显示整数【英文标题】:Subtract dates and only show integer in SQL 【发布时间】:2018-03-06 18:27:55 【问题描述】:

我试图找出两个日期之间的天数差异,当我写:'select date_trunc('day',timetable.time) - date_released as no_days'时,我得到的结果显示如下:“0年 0 星期一 3 天 16 小时 38 分钟 28.00 秒”。我只想看到“3”或“3 天”。有没有办法消除年、月、时、分、秒?我正在模式分析中运行此查询,如果这有任何改变...

【问题讨论】:

这是一个oracle数据库吗? 【参考方案1】:

在 T-SQL for Sql Server 中,标准的 datediff 函数是最简单的。

试试这个: SELECT DATEDIFF(DAY, '01/01/2009', GETDATE())

返回从 2009 年 1 月 1 日到今天之间的天数。

如果是Oracle,DateDiff语法差不多:

DATEDIFF(expr1,expr2)

DATEDIFF() 返回 expr1 - expr2,表示为从一个日期到另一个日期的天数。

HTH, 肖恩

【讨论】:

他使用减号运算符的事实表明他没有使用sql server。 好的,所以我给出的 Oracle 示例正是他所要求的“我正在尝试查找两个日期之间的天数差异”【参考方案2】:

在 Oracle 中,地板是您的朋友。

select sysdate - ts '2017-08-01 15:30:00' c
from dual

返回216.921412037037037037037037037037037037

同时

select floor(sysdate - ts '2017-08-01 15:30:00') c
from dual

返回216

【讨论】:

什么是“ts '2017-08-01 15:30:00'”?我从未在 Oracle 中看到过这样的查询。事实上,它在我的 11g XE 上引发了一个错误(ORA-00911:无效标识符)。 这是我在 ColdFusion 中所做的,但使用的是 Oracle 数据库。 啊哈,实际上是 ColdFusion 语法。好的,谢谢。【参考方案3】:

据我所知,在 Oracle 中,两个 DATE 值的差异会导致天数,所以 - 只需减去它们并删除小数点后面的所有内容(即 TRUNC)。例如:

SQL> select
  2    sysdate,
  3    sysdate - to_date('01.03.2018 21:00', 'dd.mm.yyyy hh24:mi') diff,
  4    trunc(sysdate - to_date('01.03.2018 21:00', 'dd.mm.yyyy hh24:mi')) result
  5  from dual;

SYSDATE                   DIFF     RESULT
------------------- ---------- ----------
06.03.2018 21:20:35 5,01429398          5

SQL>

【讨论】:

以上是关于减去日期并仅在 SQL 中显示整数的主要内容,如果未能解决你的问题,请参考以下文章

准备SQL语句并仅在不重复时输入

如何从主选择页面隐藏离子标签并仅在选择模式标题上显示

如何获取前两个选择器意图并仅在android中为用户显示它们

SQL 查询 - 组合两个表,删除重复项并仅保留最新的日期

MySQL - 检查连续列是不是相同并仅显示那些行

从sql中的表中减去两个日期