SQL Server 如何使用SQL按dd/mm/yyyy格式将日期字符串12012017转换为DATE

eqqqjvef  于 2022-11-28  发布在  其他
关注(0)|答案(1)|浏览(144)

周期= 12012017年

SELECT CONVERT(DATE, SUBSTRING(Periode,1,2) +'/'+SUBSTRING(Periode,3,2)+'/'+SUBSTRING(Periode,5,4)) AS TheDate

如何获取格式为13-01-2017(日/月/年)的日期?

0qx6xfy6

0qx6xfy61#

实际上有两种方法-

  • 只要把它当作一个简单的“文本”编辑(左右移动字符,添加斜线等)。
  • 将其转换为日期,然后根据需要显示日期。

我更喜欢后者,因为它至少可以确保你有一个约会。如果你做第一种,它通常会很高兴地将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,因此我们使用以下命令

SELECT CONVERT(nvarchar(10), @Periode_date, 103);

结果是12/01/2017
最后一点--我还加入了错误检查(例如,TRY CATCH块),以确保按照您希望的方式处理错误。

相关问题