我正在尝试识别我们的调度系统中打开的时间块,我唯一能做的就是检查块的描述是否为NULL。
时间作为INT存储在数据库中,因此该case语句用于将3或4个字符INT重建为DATETIME。
这是我的代码。 'stm'是块的开始时间。
case
when len(sd.sd_stm)=4 AND sd.sd_block_display IS NULL THEN convert(datetime,'2013-01-01 ' + substring(convert(varchar,sd.sd_stm),1,2)+':'+substring(convert(varchar,sd.sd_stm),3,2))
when len(sd.sd_stm)=3 AND sd.sd_block_display IS NULL THEN convert(datetime,'2013-01-01 ' + substring(convert(varchar,sd.sd_stm),1,1)+':'+substring(convert(varchar,sd.sd_stm),2,2))
ELSE '2013-01-01 00:00:00'
END
示例输入 - stm = 730 期望的输出 - 2013-01-01 07:30:00.000 实际产出 - 2013-01-01 00:00:00.000
我似乎遇到的问题是,一旦将block_display评估为NULL,它就会为stm的值返回null。当我为block_display执行此代码IS NOT NULL时,它执行正常。
请问任何建议?