如何计算查询中存储为YYYYMMDD的两天之间的天数差异?

时间:2012-05-09 18:46:22

标签: sql ibm-midrange db2-400

我正在编写一个查询,我需要计算自“YYYYMMDD”格式存储在数据库中的日期以来的天数。由于这不是Date数据类型,因此我无法使用本机Date函数。在SQL查询中执行此类计算的最佳方式(性能方面,可读性方面等)是什么。

2 个答案:

答案 0 :(得分:3)

最佳?将旧表转换为使用实际日期列。

下一个最好的?编写数据库函数将YYMMDD转换为实际日期。 Alan Campin的iDate可以提供帮助。你最终会得到类似于select cvty2d(date1)-cvty2d(date2) from ...

的东西

总比没有好?写丑陋的SQL将数字转换为字符,拆分字符,添加连字符并将THAT转换为实际日期。那头野兽看起来像

select 
  date(
     substr(char(date1),1,4) concat 
     '-' concat 
     substr (char(date1),5,2) concat 
     '-' concat 
     substr(char(date1),7,2)
  )  - 
  date(
     substr(char(date2),1,4) concat 
     '-' concat 
     substr (char(date2),5,2) concat 
     '-' concat 
     substr(char(date2),7,2)
  )   
from ...

编辑 这些体操是必要的原因是DB2 DATE()函数想要以'YYYY-MM-DD'的形式看到一个字符串,连字符是必需的。

答案 1 :(得分:0)

您运行的是哪个版本的SQL? SQL2008将该格式作为日期数据类型

没有问题
Declare @something nvarchar(100)
set @Something = '20120112'

select dateadd(dd, 1, @Something)
select datediff(dd, @Something, getdate())

2012-01-13 00:00:00.000

118