【问题标题】:Converting String to Datetime2将字符串转换为 Datetime2
【发布时间】:2016-08-09 04:42:38
【问题描述】:

我正在尝试转换

@string='25/05/2016 09:00' 

2016-05-25 09:00

@string@string2='25/05/2016'@string3='09:00' 的串联

当我尝试使用

CONVERT(datetime, '25/05/2016 09:00') 

我收到以下错误

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

请帮忙,谢谢。

【问题讨论】:

    标签: sql-server tsql datetime


    【解决方案1】:

    试试这个:

    SELECT CONVERT(datetime2, '25/05/2016 09:00', 103) 
    

    convert 方法有 3 个参数:第一个是目标数据类型,第二个是要转换的表达式,第三个是样式。在本例中,103 代表英国或法国日期格式,即dd/mm/yyyy

    Declare @string char(10)='25/05/2016'
    Declare @string2 char(5)='09:00'
    
    SELECT CONVERT(datetime2, @string + ' ' + @string2, 103) 
    

    结果:2016-05-25 09:00:00.0000000 (datetime2)

    【讨论】:

    【解决方案2】:

    感谢 marc_s 将我的查询设置为正确的格式。

    我试过了,得到了预期的结果,请告知是否有其他最佳方法,谢谢

    `Declare @string varchar(20)='25/05/2016'
     Declare @string2 varchar(20)='09:00'
     Declare @string3 Varchar(20)=(SELECT Right(@string,4)+'-'+SUBSTRING(@string,4,2)+'-'+LEFT(@string,2)+' '+@string2)
     Select CONVERT(datetime,@string3) as _datetime`
    

    【讨论】:

      【解决方案3】:

      在转换之前添加此语句

      SET DATEFORMAT DMY
      

      所以查询看起来像这样

      SET DATEFORMAT DMY
      
      SELECT CONVERT(datetime, '25/05/2016 09:00') 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-04-11
        • 2019-04-16
        • 2016-12-31
        • 1970-01-01
        • 1970-01-01
        • 2021-05-26
        • 2022-12-02
        • 2019-10-10
        相关资源
        最近更新 更多