Sql 如果日期是Hijri,则通过将Hijri生日转换为公历的值来更新出生日期
表中包含许多在BirthDate列中具有Hijri date值和Gregorian值的记录,因此请了解如何通过将Hijri date转换为Gregorian值来更新BirthDate 谢谢 我试过这个脚本,但它不起作用-我的意思是没有改变-虽然我得到 (受影响的18422排)Sql 如果日期是Hijri,则通过将Hijri生日转换为公历的值来更新出生日期,sql,gregorian-calendar,hijri,Sql,Gregorian Calendar,Hijri,表中包含许多在BirthDate列中具有Hijri date值和Gregorian值的记录,因此请了解如何通过将Hijri date转换为Gregorian值来更新BirthDate 谢谢 我试过这个脚本,但它不起作用-我的意思是没有改变-虽然我得到 (受影响的18422排) 请尝试以下代码,它将把生日列记录转换为Hijri格式: 更新成员 set BIRTHDATE=CONVERT(VARCHAR(100),BIRTHDATE,131)--[Hijri日期到公历日期] 更新成员 set BIR
请尝试以下代码,它将把生日列记录转换为Hijri格式: 更新成员 set BIRTHDATE=CONVERT(VARCHAR(100),BIRTHDATE,131)--[Hijri日期到公历日期] 更新成员 set BIRTHDATE=CONVERT(datetime,BIRTHDATE,131)---[公历日期到希吉日]
关于这一点,有几个博客,比如这样一个:什么数据类型是
生日
?是的,即使更新成员集生日=生日
也会给出“(18422行受影响)”。您的查询的实际效果如何?它是否将任何记录设置为错误的值?没有更改,列birthdate的所有记录都保持不变,这意味着它仍然在hijri date中,具有相同的旧值,birthdate类型为date我在问这个问题之前浏览了这一页,它并没有解决我的问题,顺便说一下,我没有收到任何错误消息,相反,我收到了更新记录的信息,谢谢
UPDATE MEMBER
SET BIRTHDATE = case when (SUBSTRING(cast(birthdate as nvarchar), 1, 2) ='14')
or
(SUBSTRING(cast(birthdate as nvarchar), 1, 2) ='13')
then
(SELECT CONVERT(date, birthdate , 131) )
else
birthdate
end