Date 从SQL中包含日期的4列中评估与今天最近的未来日期
我有一个表,其中有4列日期。我需要在第5列中计算距离今天最近的未来日期,并在同一行中显示该日期,例如,20周年比85岁生日近还是10周年比85岁生日近。注:85岁生日永远是最重要的日子。第6列需要显示相应的列标题 非常感谢任何人能提供的帮助Date 从SQL中包含日期的4列中评估与今天最近的未来日期,date,sql-server-2008,Date,Sql Server 2008,我有一个表,其中有4列日期。我需要在第5列中计算距离今天最近的未来日期,并在同一行中显示该日期,例如,20周年比85岁生日近还是10周年比85岁生日近。注:85岁生日永远是最重要的日子。第6列需要显示相应的列标题 非常感谢任何人能提供的帮助 Column names / sample values strt date - 01/01/2010 85th birthday - 11/12/2047 10th anniv - 01/01/2020 20th anniv
Column names / sample values
strt date - 01/01/2010
85th birthday - 11/12/2047
10th anniv - 01/01/2020
20th anniv - 01/01/2030
next date - 01/01/2030
anniv_type - 20th anniv
下面的查询使用
交叉应用
来UNPIVOT
四个日期列,然后获取最接近当前日期的一个<代码>前1仅获取一行,即最近的日期
select *
from yourtable t
cross apply
(
select top 1 *
from
(
values ([strt date], 'strt date'),
([85th birthday], '85th birthday'),
([10th anniv], '10th anniv'),
([20th anniv], '20th anniv')
) d ([next date], [anniv_type])
where [next date] > getdate()
order by datediff(day, getdate(), [next date])
) n
你的描述令人费解。您提到日期的
4列
,需要在第5列计算日期
和第6列
。你能指出所有这些栏目的名称吗?请参考您在此处首次发布的示例数据。列名在上面示例的左侧,示例输出在右侧,这是为了正确发布此信息。我需要计算[next date]和[anniv_type]字段。希望澄清?对于下一个日期
,您可以使用日期添加(年份,20,strtdate)
对不起,松鼠,我解释得不好。我已经用你建议的代码计算了{85岁生日],[10岁],[20岁]。我需要做的是根据getdate()计算这3个日期,并用将来最接近getdate()的日期填充[next date]。