我搜索并尝试了很多无法解决我的日期问题的例子,就像,
19/07/1440
我试过了这个查询
SELECT TOP 200
DATEPART(YEAR, EndDateHejri)
FROM
student
但是我收到了这个错误
从字符串
转换日期和/或时间时转换失败
我无法解决错误 - 希望得到您的建议
答案 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));