SQL Server将字符串中的列转换为日期

时间:2017-07-19 09:47:48

标签: sql-server string date

我有stocked列作为nvarchar(50),其中包含此格式('yyyy/mm/dd')的日期,我想将其转换为日期,以便我可以做一些日期添加以进行进一步的比较。

到目前为止,我所看到的一切都没有奏效(很多关于演员和皈依者)并且总是产生这样的东西:

  

“Msg 242,Level 16,State 3,Line 1   将varchar数据类型转换为日期时间数据类型会导致超出范围的值。“

3 个答案:

答案 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中,没有管理确实在插入时将数据转换为日期,但我想这对插入方式的影响不如转换它稍后