如何获得字符hijri日期SQL Server的年份

时间:2018-05-23 12:07:49

标签: sql sql-server datetime sql-server-2012 datepart

我搜索并尝试了很多无法解决我的日期问题的例子,就像,

19/07/1440

我试过了这个查询

 SELECT TOP 200   
     DATEPART(YEAR, EndDateHejri)
 FROM 
     student

但是我收到了这个错误

  

从字符串

转换日期和/或时间时转换失败

我无法解决错误 - 希望得到您的建议

4 个答案:

答案 0 :(得分:2)

发布不同的答案。由于OP仅在年份之后,并且他们已经声明它始终采用00/00/yyyy格式,为什么不使用RIGHT?所以:

SELECT RIGHT(EndDateHejri,4) as HejriYear;

答案 1 :(得分:2)

我尝试回答@Vishnu Chandel对我有用。

SELECT DATEPART(YEAR,CONVERT(datetime2(0),convert(VARCHAR,EndDateHejri),103)) 

完整的代码是:

SELECT TOP 200   
   SELECT DATEPART(YEAR,CONVERT(datetime2(0),convert(VARCHAR,EndDateHejri),103)) as year
 FROM 
     student

答案 2 :(得分:1)

我有点Google-Fu和格式131可以帮助您将Hijri日期转换为格里高利日期...

grep -o '\{\?\S*\}' myfile

不幸的是,所有日期函数DECLARE @hijri DATETIME = CONVERT(datetime, ' 7/05/1421 12:14:35:727PM', 131) SELECT @hijri DATEPART(),甚至DATENAME()等等)都是基于操纵格里高利日期。所以你不能使用它们。

所以,你被迫使用字符串操作。

DATEADD()

https://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=901209ae0cdcf38cdcdea8afad4fd034

答案 3 :(得分:0)

请尝试以下代码以获得正确的输出。

SELECT DATEPART(YEAR,CONVERT(datetime2(0),convert(VARCHAR,EndDateHejri),103));