SQL Server如何从TIMESTAMP类型字段提取日期部分,解决DATE函数报错问题
解决方案
SQL Server 未内置PostgreSQL风格的DATE()函数,提取时间字段的日期部分可以使用以下两种通用方法:
- 方法1:使用
CAST函数(符合SQL标准,兼容性最优)
你的原过滤条件需要调整为如下写法,注意SQL Server不支持直接对日期类型做数字加减,需要用DATEADD函数处理日期偏移:AND CAST(A.SERVERTIME AS DATE) = DATEADD(DAY, 1, CAST(B.SERVERTIME AS DATE)) - 方法2:使用
CONVERT函数
效果和CAST完全一致,可根据代码风格选择:AND CONVERT(DATE, A.SERVERTIME) = DATEADD(DAY, 1, CONVERT(DATE, B.SERVERTIME))
注意事项
如果你的SQL Server环境中SERVERTIME字段定义为TIMESTAMP类型(该类型在SQL Server中别名是ROWVERSION,实际存储二进制序列,不存储时间值),需要先将字段类型调整为DATETIME/DATETIME2类型后再使用上述转换逻辑。
内容的提问来源于stack exchange,提问作者Papillon
相关产品推荐
相关产品推荐

