【问题标题】:Convert to Datefrom dd/mm/yyyy string SQL从 dd/mm/yyyy 字符串 SQL 转换为日期
【发布时间】:2018-02-19 15:46:23
【问题描述】:

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

我目前正在使用这条 SQL 语句:

CONVERT(datetime, ProposedTransferDate.AttributeValue, 101)

但我得到一个错误:

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

谢谢

克里斯

【问题讨论】:

  • 标记您正在使用的 dbms,CONVERT() 是产品特定功能。

标签: sql datetime type-conversion


【解决方案1】:

你应该使用掩码103:

CONVERT(datetime,ProposedTransferDate.AttributeValue, 103)

this TechOnTheNet article我们发现掩码103的格式如下:

dd/mm/yy(英国/法国标准)

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      该转换错误是由于您的日期列不是标准且唯一的 SQL/ISO 日期格式,即 YYYY-MM-DD。您的日期格式可能是 MM/DD/YYYY,所以如果您的登录默认语言 UK 意味着日期格式将类似于 DD/MM/YYYY。所以在转换之前,您需要更改 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'))   
      

      【讨论】:

        【解决方案4】:

        试试这个:

        SELECT convert(datetime, '23/10/2016', 103) 
        

        结果: 2016-10-23 00:00:00.000

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-05-19
          • 2012-08-04
          • 1970-01-01
          • 2011-11-01
          • 2023-03-27
          • 1970-01-01
          • 2020-06-22
          • 1970-01-01
          相关资源
          最近更新 更多