我正在尝试为装运日期大于今天的所有装运提取数据。但是,我无法弄清楚nvarchar格式的简单转换,尝试运行此代码时出现超出范围的值错误:
select *
from dbo.BAS_CT_RAW_ARCHIVE_TBL
where SHIPMENTDATE > GETDATE()
消息242,级别16,状态3,第1行nvarchar数据的转换 类型转换为日期时间数据类型会导致值超出范围。
答案 0 :(得分:1)
尝试:
select *
from dbo.BAS_CT_RAW_ARCHIVE_TBL
where convert(date, SHIPMENTDATE, 103) > GETDATE()
要查看如何将convert
与非标准日期一起使用,请参见 this 。
进一步考虑:对列使用正确的数据类型,即不要将日期存储为字符串,而应将数据存储为date
数据类型-这样可以避免出现此类问题。
答案 1 :(得分:0)
根据下面评论中的数据格式,应该可以使用
select * from dbo.BAS_CT_RAW_ARCHIVE_TBL
where CONVERT(date, SHIPMENTDATE, 103) > convert(date, GETDATE())