sql-server - 在sql中转换日期格式
问题描述
最近我在使用日期格式时遇到了一个问题。在下表中,我有以下日期,这些日期是在 microsoft 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.
任何人都可以帮助我如何处理日期并避免此类错误?
解决方案
如果前 2 位数字代表一天,我想您应该尝试格式 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
推荐阅读
- python - 为什么我不断收到错误“IndexError:列表索引超出范围”?
- angular - 如何监视可观察的属性
- reactjs - 从firebase cloud firestore获取数据进行反应
- python - Pip 无法安装 matplotlib
- prolog - 最通用的统一词和结果
- gitlab-ci - 无法根据 Gitlab CI 中的变量跳过正在运行的管道
- python - boto3中generate_presigned_url的返回值类型是什么?
- java - 这种隐式类型转换如何在 java 中工作?
- .net - nuget restore 突然停止为 mcr.microsoft.com/dotnet/framework/sdk docker image 正常工作
- r - 删除R中除表情符号之外的所有字符?