在sql中转换日期格式



最近我在处理日期格式时遇到了一个问题。在下表中,我有以下日期,这些日期是在微软SQL Server management studio 2014 中查询时获得的

select [Month Ending Date] from drug_practise 
dates
12/1/2016
11/1/2016
10/1/2016
9/1/2016
8/1/2016

但我需要将这些日期转换为适当的格式,例如YYYY-mm-dd,所以我使用了以下代码:-

select convert(date,[Month Ending Date],103) from drug_practise 

但它抛出的错误如下:-

Msg 241, Level 16, State 1, Line 3
Conversion failed when converting date and/or time from character string.

有人可以帮助我如何处理日期并避免此类错误吗?

如果前两位数字代表一天,我想你应该尝试104格式,而不是103格式——至少这与提供的示例很好:

DECLARE @t TABLE(myDateStr CHAR(10))
INSERT INTO @t VALUES
('12/1/2016')
,('11/1/2016')
,('10/1/2016')
,('9/1/2016')
,('8/1/2016')
SELECT myDateStr, TRY_CONVERT(DATE, myDateStr, 104) AS myDate, TRY_CONVERT(VARCHAR(10), TRY_CONVERT(DATE, myDateStr, 104), 23) AS myDateStrNew
FROM @t

如果前两位数字表示月份,您可以尝试使用格式0:

DECLARE @t TABLE(myDateStr CHAR(10))
INSERT INTO @t VALUES
('12/1/2016')
,('11/1/2016')
,('10/1/2016')
,('9/1/2016')
,('8/1/2016')
SELECT myDateStr, TRY_CONVERT(DATE, myDateStr, 0) AS myDate, TRY_CONVERT(VARCHAR(10), TRY_CONVERT(DATE, myDateStr, 0), 23) AS myDateStrNew
FROM @t

相关内容

  • 没有找到相关文章

最新更新