周期= 12012017年
SELECT CONVERT(DATE, SUBSTRING(Periode,1,2) +'/'+SUBSTRING(Periode,3,2)+'/'+SUBSTRING(Periode,5,4)) AS TheDate
如何获取格式为13-01-2017(日/月/年)的日期?
0qx6xfy61#
实际上有两种方法-
我更喜欢后者,因为它至少可以确保你有一个约会。如果你做第一种,它通常会很高兴地将abcdefgh转换为ab/cd/efgh。要将其转换为日期,除非它的格式完全是yyyymmdd,否则我通常使用DATEFROMPARTS而不是创建文本字符串。
abcdefgh
ab/cd/efgh
yyyymmdd
DATEFROMPARTS
DATEFROMPARTS有3个参数--年、月、日。你可以使用问题中的SUBSTRING函数来做这些。下面的代码(也可以在db<>fiddle中找到)显示了第一部分-生成一个真实的日期记录。
DECLARE @Periode nvarchar(10) = N'12012017'; DECLARE @Periode_date date; SELECT @Periode_date = DATEFROMPARTS(SUBSTRING(@Periode,5,4), SUBSTRING(@Periode,3,2), SUBSTRING(@Periode,1,2)); SELECT @Periode_date;
结果是2017-01-12-日期正确,但格式不正确。要格式化它,您可以使用CONVERT函数将其转换为相关格式,该函数还允许您指定样式(请注意,CAST不能执行此操作)-请参阅CAST and CONVERT以获取参考。对于我们来说,我们需要的格式是103,因此我们使用以下命令
2017-01-12
CONVERT
SELECT CONVERT(nvarchar(10), @Periode_date, 103);
结果是12/01/2017。最后一点--我还加入了错误检查(例如,TRY CATCH块),以确保按照您希望的方式处理错误。
12/01/2017
1条答案
按热度按时间0qx6xfy61#
实际上有两种方法-
我更喜欢后者,因为它至少可以确保你有一个约会。如果你做第一种,它通常会很高兴地将
abcdefgh
转换为ab/cd/efgh
。要将其转换为日期,除非它的格式完全是
yyyymmdd
,否则我通常使用DATEFROMPARTS
而不是创建文本字符串。DATEFROMPARTS有3个参数--年、月、日。你可以使用问题中的SUBSTRING函数来做这些。
下面的代码(也可以在db<>fiddle中找到)显示了第一部分-生成一个真实的日期记录。
结果是
2017-01-12
-日期正确,但格式不正确。要格式化它,您可以使用
CONVERT
函数将其转换为相关格式,该函数还允许您指定样式(请注意,CAST不能执行此操作)-请参阅CAST and CONVERT以获取参考。对于我们来说,我们需要的格式是103,因此我们使用以下命令
结果是
12/01/2017
。最后一点--我还加入了错误检查(例如,TRY CATCH块),以确保按照您希望的方式处理错误。