Я немного из Google-Fu и формат 131 должен помочь вам конвертировать даты хиджры в григорианские даты ...
DECLARE @hijri DATETIME = CONVERT(datetime, ' 7/05/1421 12:14:35:727PM', 131)
SELECT @hijri
К сожалению, все функции даты (DATEPART()
, DATENAME()
, даже DATEADD()
и т. д.) все основаны на манипулировании григорианскими датами.Поэтому вы не можете их использовать.
Итак, вы вынуждены использовать строковые манипуляции.
DECLARE @hijri DATETIME = CONVERT(datetime, ' 7/05/1421 12:14:35:727PM', 131)
SELECT @hijri
SELECT DATEPART(year, @hijri)
-- Gives 2000 :(
SELECT RIGHT(CONVERT(VARCHAR(10), @hijri, 131), 4)
-- Gives 1421 :)
https://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=901209ae0cdcf38cdcdea8afad4fd034