计算表上现有日期与当前日期之间的天数

时间:2018-04-04 15:06:51

标签: sql

我正在尝试计算存储在同一个表中的一系列日期之间的天数。使用DATEDIFF查询没有问题,我在表中有开始日期和结束日期。我正在努力计算我只有一个开始日期的日子(表是兼职工作的员工的服务历史,最近的数据行是开放式的),因此我想使用当前日期来替换空白以计算迄今为止的服务。

Further information attached

3 个答案:

答案 0 :(得分:0)

使用coalesce()和当前日期。在ANSI SQL中,这将是coalesce(end_date, CURRENT_DATE)

但是,datediff()建议使用SQL Server(或者MySQL)。在SQL Server中:

select datediff(day, start_date, coalesce(end_date, getdate())) as days_of_service

答案 1 :(得分:0)

试试这个:

DATEDIFF ( datepart , startdate , enddate )
SELECT DATEDIFF(DAY, '1/1/2018', '4/4/2018');

答案 2 :(得分:0)

如果您感兴趣(或其他任何人),这里是Oracle的解决方案:

select trunc(sysdate - to_date('03/04/2018','dd/mm/yyyy')) as days,
       trunc(mod(sysdate - to_date('03/04/2018','dd/mm/yyyy'),1) * 24) as hours,
       trunc(mod(mod(sysdate - to_date('03/04/2018','dd/mm/yyyy'),1) * 24, 1) * 60) as minutes
  from dual

查询sysdate - to_date('some date','dd/mmy/yyyy')会将天数,分钟,秒等作为浮点数返回给您。为了获得正确的小时数和分钟数,您只需要获取 decimal 部分(通过mod运算符),然后将其乘以24, 60,分别。