从dd/mm/yyyy字符串SQL转换为日期

从dd/mm/yyyy字符串SQL转换为日期,sql,datetime,type-conversion,Sql,Datetime,Type Conversion,我目前有一个格式为dd/mm/yyyy的字符串,我正试图将其转换为SQL中的日期时间变量 我当前正在使用以下SQL语句: CONVERT(datetime, ProposedTransferDate.AttributeValue, 101) 但我有一个错误: 将varchar数据类型转换为datetime数据类型导致值超出范围 谢谢 克里斯你应该使用面具103: CONVERT(datetime,ProposedTransferDate.AttributeValue, 103) 从中,我们发

我目前有一个格式为
dd/mm/yyyy
的字符串,我正试图将其转换为SQL中的日期时间变量

我当前正在使用以下SQL语句:

CONVERT(datetime, ProposedTransferDate.AttributeValue, 101)
但我有一个错误:

将varchar数据类型转换为datetime数据类型导致值超出范围

谢谢


克里斯

你应该使用面具
103

CONVERT(datetime,ProposedTransferDate.AttributeValue, 103)
从中,我们发现掩码103具有以下格式:

年月日(英国/法国标准)


使用字符串操作将其转换为
yyyy-mm-dd
格式:

CAST(
    RIGHT(ProposedTransferDate.AttributeValue,4) +
    '-' +
    RIGHT(LEFT(ProposedTransferDate.AttributeValue,5),2) +
    '-' +
    LEFT(ProposedTransferDate.AttributeValue,2)
AS DATETIME)

该转换错误是由于您的日期列不是标准且唯一的SQL/ISO日期格式,即YYYY-MM-DD。您的日期格式可能是MM/DD/YYYY,因此,如果您的登录默认语言为UK,则表示日期格式将类似于DD/MM/YYYY。因此,在转换之前,您需要更改SQL SERVER中的默认语言

乙二醇

你也可以用另一种方法

  SET LANGUAGE 'british english'
select DATEPART(dd,'2-3-2012')+ '/' + DATEPART(mm,'2-3-2012')+ '/' + DATEPART(yy,'2-3-2012')

试试这个:

SELECT convert(datetime, '23/10/2016', 103) 
结果:
2016-10-23 00:00:00.000

标记您正在使用的dbms,
CONVERT()
是特定于产品的功能。
SET LANGUAGE 'british english'
select CONCAT(DATEPART(dd,'2-3-2012'), '/' , DATEPART(mm,'2-3-2012'), '/' ,DATEPART(yy,'2-3-2012'))   
SELECT convert(datetime, '23/10/2016', 103)