减去日期并仅在 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 中显示整数的主要内容,如果未能解决你的问题,请参考以下文章