如何将字符串Yyyymm转换为SQL中的DateTime



我有一个字符串'2016-03-05',我想转换为 datetime

这是我的代码:

Declare @period as nvarchar(10)
Set @period = '2016-03-05'
Select Convert(Datetime, @period, 112).

运行我会收到错误

转换从字符串转换日期时失败。

转换格式 112您使用过的是输入'20160305'(没有破折号作为日期零件分隔符)。

所以要么做

select convert(Datetime, '20160305', 112)

或(如果您的输入确实包含破折号,则只需将它们删除:

select convert(Datetime, replace('2016-03-05', '-', ''), 112)

那是因为您传递给CONVERT函数的样式不支持该格式。您可以做两件事...

1-丢失破折号

Declare @period as nvarchar(10)
Set @period = '20160305' --  I've dropped the dashes here
Select Convert(Datetime, @period, 112)

2-将样式更改为支持此格式的事物

Declare @period as nvarchar(10)
Set @period = '2016-03-05'
Select Convert(Datetime, @period, 21) -- I've changed the style here

有关完整的参考,请阅读MSDN文档

SELECT LEFT(201605,4) + '-' + RIGHT(201605,2)
{OR} 
SELECT RIGHT(201605,2) + '-' + LEFT(201605,4)

尝试一下,我猜是根据您的需要

来工作
Declare @period as nvarchar(10)
Set @period = '2016-03-05'
select CAST(@period as datetime)

最新更新