2017-07-19 73 views
0

我有一列stocked作为nvarchar(50)包含这种格式的日期('yyyy/mm/dd'),我想将它转换为日期,所以我可以做一些日期和时间来做进一步的比较。SQL服务器将字符串转换为日期列

什么,我到目前为止一直看到(当时很多关于石膏和转换),总是导致类似的东西:

“消息242,级别16,状态3,行1 将varchar数据类型转换为日期时间数据类型导致超出范围的值。“

+0

第一个数据库设计错误:_I有一个列存储为nvarchar(50)包含dates_更改列是日期 – RiggsFolly

+0

mysql或sql server? –

+0

使用[STR_TO_DATE](https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_str-to-date) –

回答

0

使用

ISDATE(表达式)

返回1,如果该表达式是有效的日期,时间,或日期时间值; 否则为0.

1

很有可能您的数据无法正确转换。您可以使用查询像下面来看看这个问题的数据(这个作品在SQL服务器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; 
0

Basicly我有我插入到SQL Server 2014的Excel表格,没有管理就转换数据迄今在插入,但我想这将是少于工作的插入方式比以后转换它的痛苦