将GETDATE()转换为Hijri日期到yyyymmdd

时间:2017-03-14 12:38:48

标签: sql sql-server sql-server-2012

我正在尝试获取Hijri GETDATE()并将其转换为此格式yyyymmdd

我已经尝试过这个脚本

SELECT CONVERT(VARCHAR(10), GETDATE(), 131)  

但它给了我这种格式(16/06/1438),我真正需要的是(1438/06/16)

6 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

如果您使用的是SQL Server 2012及更高版本,

SELECT FORMAT(GETDATE()+1,'yyyy/MM/dd','ar')

它会为您提供日期2017/03/14

的以下结果
1438/06/16

答案 2 :(得分:1)

另一个选项是convertvarchar然后再date然后varchar

使用format() with 'ar-SA'似乎比使用样式convert()的{​​{1}}提前1天返回。

131

rextester演示:http://rextester.com/LIX82417

返回

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)

答案 3 :(得分:0)

尝试使用120:

SELECT CONVERT(VARCHAR(10), GETDATE(), 120) 

答案 4 :(得分:0)

使用以下查询:

<script type="text/javascript">
$('input:text').keypress(function(e) {
    var KeyID = e.keyCode;
    switch(KeyID)
    {
        case 32:
            alert("Space");
            break;
        case 13:
            alert("Enter");
            break;
        default:
            break;
    }
})

答案 5 :(得分:0)

您可以使用以下查询执行此操作:

SELECT REPLACE(CONVERT(VARCHAR(10), GETDATE(), 120),'-','/')