Search code examples
sqlsql-serverdatetimesql-server-2012hijri

Trying to get Last day of hijri year Resulting in conversion error My query attached


i am trying to get last day of hijri calender,

First i am defining my queries and logic, This query getting my hijri dates.

SELECT top 1 convert(date,dateHijri,103) , datepart(year,try_convert(date,dateHijri,103))
from Item

it gives me result,

1440-07-19 , 1440

This query getting last date of georgian calender,

 select top 1 DATEADD(MILLISECOND, -3,DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()) + 1, 0)) 'Last Day of Georgian Year'

Result :  2018-12-31 23:59:59.997

Now, my final query in which i am trying to get last day of hijri year try to merg first and second query,

select top 1 DATEADD(MILLISECOND, -3,DATEADD(YEAR, DATEDIFF(YEAR, 0, convert(date,dateHijri,103)) + 1, 0)) as 'Last Day of Hijri Year'  from Item 

Error:The conversion of a date data type to a datetime data type resulted in an out-of-range value.

hopes for your suggestion thanks


Solution

  • you can try this

    select top 1 DATEADD(MILLISECOND, -3, CONVERT(DATETIME, CONVERT(VARCHAR(4), YEAR(convert(date,dateHijri,103)) + 1)+'0101', 131)) as 'Last Day of Hijri Year'  from Item