首页 > 解决方案 > 比较两列的日期值

问题描述

我有一个名为 的列PairDt,它是一个包含最后 5 个字符的日期值的字符串。我想将该日期值与列中的日期值进行比较,该Day列包含YYYY-MM-DD格式中的日期。

PairDt                  Day
----------------------------------
DCS-CNY-Yunbi-42606     2016-08-24
DCS-CNY-Yunbi-42607     2016-08-25
DCS-CNY-Yunbi-42608     2016-08-26
DCS-CNY-Yunbi-42609     2016-08-27
DCS-CNY-Yunbi-42610     2016-08-28

如何转换Day为值?

我正在尝试隔离PairDt与 Days 中的日期值不匹配的日期值

标签: datesql-server-2012

解决方案


PairDt 末尾的这个 5 位数字看起来像是自 1899 年 12 月 30 日以来的天数。要将此数字转换为日期,请使用 DATEADD 添加尽可能多的天数。要将日期转换为数字,请使用 DATEDIFF 计算天数。像这样的代码:

declare @PairDt varchar(50) = 'DCS-CNY-Yunbi-42606', @Day date = '2016-08-24'
select DATEADD(d, cast(right(@PairDt, 5) as int), '1899-12-30'), DATEDIFF(day, '1899-12-30', @Day)

推荐阅读