我正在尝试获取hijri getDate()并将其转换为此格式yyyymmdd
我已经尝试了此脚本
SELECT CONVERT(VARCHAR(10), GETDATE(), 131)
,但它给了我这种格式(16/06/1438),而我实际需要的是(1438/06/16)
SQL Server没有为此类日期提供大量格式的选项,因此请自己构建:
SELECT (RIGHT(CONVERT(VARCHAR(10), GETDATE(), 131), 4) + '/' +
CONVERT(VARCHAR(5), GETDATE(), 131)
) as hj_yyyymmdd
糟糕。正确的想法,错误实现:
SELECT (RIGHT(CONVERT(VARCHAR(10), GETDATE(), 131), 4) +
SUBSTRING(CONVERT(VARCHAR(10), GETDATE(), 131), 3, 4) +
LEFT(CONVERT(VARCHAR(10), GETDATE(), 131), 2)
) AS hj_yyyymmdd
如果您的SQL Server 2012及以上,
SELECT FORMAT(GETDATE()+1,'yyyy/MM/dd','ar')
它将为您提供以下日期2017/03/14
1438/06/16
另一个选项是将convert
转到varchar
,然后再次date
,然后再次varchar
。
使用format() with 'ar-SA'
似乎比使用convert()
与样式131
更早返回1天。
select Method='multiconvert'
,conversion = convert(varchar(10)
,convert(date,convert(varchar(12),getdate(),131),103),112)
union all
select 'format'
, format ( getdate(), 'yyyyMMdd', 'ar-SA' )
union all
select 'style131'
,convert(varchar(12),getdate(),131)
rextester演示:http://rextester.com/lix82417
返回
+--------------+--------------+
| Method | conversion |
+--------------+--------------+
| multiconvert | 14380616 |
| format | 14380615 |
| style131 | 16/06/1438 |
+--------------+--------------+
使用以下查询:
SELECT FORMAT ( GETDATE(), 'yyyy/MM/dd', 'ar-SA' )
尝试120:
SELECT CONVERT(VARCHAR(10), GETDATE(), 120)
您可以使用以下查询来执行此操作:
SELECT REPLACE(CONVERT(VARCHAR(10), GETDATE(), 120),'-','/')