将getDate()转换为hijri日期为yyyymmdd



我正在尝试获取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),'-','/')

相关内容

  • 没有找到相关文章

最新更新