我有stocked
列作为nvarchar(50)
,其中包含此格式('yyyy/mm/dd')
的日期,我想将其转换为日期,以便我可以做一些日期添加以进行进一步的比较。
到目前为止,我所看到的一切都没有奏效(很多关于演员和皈依者)并且总是产生这样的东西:
“Msg 242,Level 16,State 3,Line 1 将varchar数据类型转换为日期时间数据类型会导致超出范围的值。“
答案 0 :(得分:1)
您很可能拥有无法正确转换的数据。您可以使用下面的查询来查看问题数据(这适用于SQL Server 2012及更高版本)
declare @tableName table(stocked nvarchar(50));
insert into @tableName values
('2017/12/31'),('2017/11/11'),('2017/11/13'),('2017/13/11');
SET DATEFORMAT ymd;
select
stocked,
TRY_PARSE(stocked as datetime)
from @tableName
where TRY_PARSE(stocked as datetime) is NULL;
答案 1 :(得分:0)
使用
ISDATE(表达)
如果表达式是有效的日期,时间或日期时间值,则返回1; 否则,0。
答案 2 :(得分:0)
基本上我有一个excel表,我插入到SQL Server 2014中,没有管理确实在插入时将数据转换为日期,但我想这对插入方式的影响不如转换它稍后