Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 2) +d+1948440-385; 如果(jd>2299160),则 设置l=jd+68569; 集合n=intPart((4*l)/146097); 设置l=l-intPart((146097*n+3)/4); 集合i=intPart((4000*(l_Java_Mysql_Date_Internationalization_Hijri - Fatal编程技术网

Java 2) +d+1948440-385; 如果(jd>2299160),则 设置l=jd+68569; 集合n=intPart((4*l)/146097); 设置l=l-intPart((146097*n+3)/4); 集合i=intPart((4000*(l

Java 2) +d+1948440-385; 如果(jd>2299160),则 设置l=jd+68569; 集合n=intPart((4*l)/146097); 设置l=l-intPart((146097*n+3)/4); 集合i=intPart((4000*(l,java,mysql,date,internationalization,hijri,Java,Mysql,Date,Internationalization,Hijri,2) +d+1948440-385; 如果(jd>2299160),则 设置l=jd+68569; 集合n=intPart((4*l)/146097); 设置l=l-intPart((146097*n+3)/4); 集合i=intPart((4000*(l+1))/1461001); 设置l=l-intPart((1461*i)/4)+31; 集合j=intPart((80*l)/2447); 组d=l-intPart((2447*j)/80); 设置l=intPart(j/11); 设置m=j

2) +d+1948440-385; 如果(jd>2299160),则 设置l=jd+68569; 集合n=intPart((4*l)/146097); 设置l=l-intPart((146097*n+3)/4); 集合i=intPart((4000*(l+1))/1461001); 设置l=l-intPart((1461*i)/4)+31; 集合j=intPart((80*l)/2447); 组d=l-intPart((2447*j)/80); 设置l=intPart(j/11); 设置m=j+2-12*l; 设置y=100*(n-49)+i+l; 其他的 设置j=jd+1402; 设置k=intPart((j-1)/1461); 设置l=j-1461*k; 集合n=intPart((l-1)/365)-intPart(l/1461); 设置i=l-365*n+30; 集合j=intPart((80*i)/2447); 组d=i-intPart((2447*j)/80); 第i组=内部零件(j/11); 设置m=j+2-12*i; 设置y=4*k+n+i-4716; 如果结束; 返回浓度(y,'-',m,'-',d); 结束$$ 定界符;
str\u to\u date()mysql函数可以使用。可能是性能下降感谢@ArunKillu,尝试过,没有成功。性能不是我们的问题。我们可以稍后对它进行调优,但现在str_to_date只会将字符串转换为date,但这并不意味着mysql的“date”将允许我将其存储为date。试过了,没用。因为MySQL假设“date”中的任何内容都只能是英文数字。我们可以用英文存储日期,然后在检索后将其转换为阿拉伯语。这是我们一直在考虑的事情,但不幸的是,另一个后端提供商将显示“原样”,所以要求仅用阿拉伯语存储。相同轨道上的数据+1。但是,另一个后端提供程序将在应用程序中显示“原样”,因此要求仅以阿拉伯语存储。既然“假定”用户只接受阿拉伯语教育。@KarmicDice,“其他后端提供商”是什么意思?您无法控制的其他代码访问同一个表?它还会写入表中,还是只从表中读取?如果它是只读的,那么您可能会基于您的表构建一个表,该表将以阿拉伯语显示从开始的日期。如果数据确实必须以阿拉伯语存储,那么您必须在SQL中编写从字符串到数字的转换,使用
SUBSTRING\u INDEX
拆分日期和
字段来识别月份名称。太棒了@MvG这完全有道理!非常感谢。请用评论编辑(修改)你的答案。我会接受的。我的合作开发者也被你的回答逗乐了。再次感谢。
DELIMITER $$

DROP FUNCTION IF EXISTS `kdmtest`.`IntPart` $$
CREATE FUNCTION `kdmtest`.`IntPart` (FloatNum float) RETURNS INT
BEGIN
if (floatNum< -0.0000001) then
     return ceil(floatNum-0.0000001);
else
  return floor(floatNum+0.0000001);
end if;
END $$

DELIMITER ;


DELIMITER $$

DROP FUNCTION IF EXISTS `kdmtest`.`Hicri` $$
CREATE DEFINER=`root`@`localhost` FUNCTION `Hicri`(MiladiTarih date) RETURNS date
BEGIN
  declare d,m,y,jd,l,n,j int;
  set d=day(MiladiTarih);
  set m=month(MiladiTarih);
  set y=year(MiladiTarih);
  if ((y>1582) or((y=1582) and (m>10)) or ((y=1582) and (m=10) and (d>14))) then
    set jd=intpart((1461*(y+4800+intpart((m-14)/12)))/4)+intpart((367*(m-2-12*(intpart((m-14)/12))))/12)- intpart( (3* (intpart(  (y+4900+    intpart( (m-14)/12)     )/100)    )   ) /4)+d-32075;
  else
    set jd = 367*y-intpart((7*(y+5001+intpart((m-9)/7)))/4)+intpart((275*m)/9)+d+1729777;
  end if;
                    set l=jd-1948440+10632;
                    set n=intpart((l-1)/10631);
                    set l=l-10631*n+354;
                    set j=(intpart((10985-l)/5316))*(intpart((50*l)/17719))+(intpart(l/5670))*(intpart((43*l)/15238));
                    set l=l-(intpart((30-j)/15))*(intpart((17719*j)/50))-(intpart(j/16))*(intpart((15238*j)/43))+29;
                    set m=intpart((24*l)/709);
                    set d=l-intpart((709*m)/24);
                    set y=30*n+j-30;
return concat(y,'-',m,'-',d);
END $$

DELIMITER ;


DELIMITER $$

DROP FUNCTION IF EXISTS `kdmtest`.`Miladi` $$
CREATE FUNCTION `kdmtest`.`Miladi` (HicriTarih date) RETURNS date
BEGIN
  declare d,m,y,jd,l,n,j,i,k int;
  set d=day(HicriTarih);
    set m=month(HicriTarih);
    set y=year(HicriTarih);
    set jd=intPart((11*y+3)/30)+354*y+30*m-intPart((m-1)/2)+d+1948440-385;
  if (jd> 2299160 ) then
        set l=jd+68569;
        set n=intPart((4*l)/146097);
    set l=l-intPart((146097*n+3)/4);
        set i=intPart((4000*(l+1))/1461001);
    set l=l-intPart((1461*i)/4)+31;
    set j=intPart((80*l)/2447);
    set d=l-intPart((2447*j)/80);
        set l=intPart(j/11);
        set m=j+2-12*l;
        set y=100*(n-49)+i+l;
  else
    set j=jd+1402;
    set k=intPart((j-1)/1461);
    set l=j-1461*k;
    set n=intPart((l-1)/365)-intPart(l/1461);
    set i=l-365*n+30;
        set j=intPart((80*i)/2447);
        set d=i-intPart((2447*j)/80);
        set i=intPart(j/11);
        set m=j+2-12*i;
        set y=4*k+n+i-4716;
  end if;
  return concat(y,'-',m,'-',d);
END $$

DELIMITER ;