我目前有一个格式dd/mm/yyyy
的字符串,我试图将其转换为SQL中的日期时间变量。
我目前正在使用此SQL语句:
CONVERT(datetime, ProposedTransferDate.AttributeValue, 101)
但是我收到了错误:
将varchar数据类型转换为日期时间数据类型会导致超出范围的值。
谢谢
克里斯
答案 0 :(得分:6)
你应该使用掩码103
:
CONVERT(datetime,ProposedTransferDate.AttributeValue, 103)
从this TechOnTheNet article我们发现掩码103具有以下格式:
dd / mm / yy(英国/法国标准)
答案 1 :(得分:1)
使用字符串操作将其转换为yyyy-mm-dd
格式:
CAST(
RIGHT(ProposedTransferDate.AttributeValue,4) +
'-' +
RIGHT(LEFT(ProposedTransferDate.AttributeValue,5),2) +
'-' +
LEFT(ProposedTransferDate.AttributeValue,2)
AS DATETIME)
答案 2 :(得分:0)
转换错误是由于您的日期列不是标准且唯一的SQL / ISO日期格式,即YYYY-MM-DD。您的日期格式可能是MM / DD / YYYY,因此如果您的登录默认语言UK表示日期格式将类似于DD / MM / YYYY.So转换前您想要更改SQL SERVER中的默认语言。This link to show types of languages and learn about SET LANGUAGE(TSQL)
EG
SET LANGUAGE 'british english'
select convert(date,GETDATE(),103) ------------use date then it show only date
你也可以用另一种方式
SET LANGUAGE 'british english'
select DATEPART(dd,'2-3-2012')+ '/' + DATEPART(mm,'2-3-2012')+ '/' + DATEPART(yy,'2-3-2012')
或
SET LANGUAGE 'british english'
select CONCAT(DATEPART(dd,'2-3-2012'), '/' , DATEPART(mm,'2-3-2012'), '/' ,DATEPART(yy,'2-3-2012'))
答案 3 :(得分:0)
试试这个:
SELECT convert(datetime, '23/10/2016', 103)
结果: 2016-10-23 00:00:00.000