diff --git a/pdate-v1.sql b/pdate-v1.sql deleted file mode 100644 index 8fcfe9e..0000000 --- a/pdate-v1.sql +++ /dev/null @@ -1,664 +0,0 @@ --- Gregorian - Jalali Date Converter Functions for Mysql, v2.0.0 --- Copyright (C) 2019 Mohammad Saleh Souzanchi(saleh.souzanchi@gmail.com|https://github.com/zoghal), Mehran . M . Spitman --- --- This program is free software: you can redistribute it and/or modify --- it under the terms of the GNU General Public License as published by --- the Free Software Foundation, either version 3 of the License, or --- (at your option) any later version. --- --- This program is distributed in the hope that it will be useful, --- but WITHOUT ANY WARRANTY; without even the implied warranty of --- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the --- GNU General Public License for more details. --- --- You should have received a copy of the GNU General Public License --- along with this program. If not, see . - - - - --- ---------------------------- --- Function structure for `__mydiv` --- ---------------------------- -DROP FUNCTION IF EXISTS `__mydiv`; -DELIMITER ;; -CREATE DEFINER=`root`@`localhost` FUNCTION `__mydiv`(`a` int, `b` int) RETURNS bigint(20) -BEGIN -# Copyright (C) 2009-2012 Mohammad Saleh Souzanchi -# WebLog : http://soozanchi.ir -# Version V1.0.2 - - return FLOOR(a / b); -END;; -DELIMITER ; - --- ---------------------------- --- Function structure for `__mymod` --- ---------------------------- -DROP FUNCTION IF EXISTS `__mymod`; -DELIMITER ;; -CREATE DEFINER=`root`@`localhost` FUNCTION `__mymod`(`a` int, `b` int) RETURNS bigint(20) -BEGIN -# Copyright (C) 2011-2012 Mehran . M . Spitman -# WebLog :spitman.azdaa.com -# Version V1.0.2 - - return (a - b * FLOOR(a / b)); -END;; -DELIMITER ; - --- ---------------------------- --- Function structure for `_gdmarray` --- ---------------------------- -DROP FUNCTION IF EXISTS `_gdmarray`; -DELIMITER ;; -CREATE DEFINER=`root`@`localhost` FUNCTION `_gdmarray`(`m` smallint) RETURNS smallint(2) -BEGIN -# Copyright (C) 2009-2012 Mohammad Saleh Souzanchi -# WebLog : http://soozanchi.ir -# Version V1.0.1 - - CASE m - WHEN 0 THEN RETURN 31; - WHEN 1 THEN RETURN 28; - WHEN 2 THEN RETURN 31; - WHEN 3 THEN RETURN 30; - WHEN 4 THEN RETURN 31; - WHEN 5 THEN RETURN 30; - WHEN 6 THEN RETURN 31; - WHEN 7 THEN RETURN 31; - WHEN 8 THEN RETURN 30; - WHEN 9 THEN RETURN 31; - WHEN 10 THEN RETURN 30; - WHEN 11 THEN RETURN 31; - END CASE; - -END;; -DELIMITER ; - --- ---------------------------- --- Function structure for `_jdmarray` --- ---------------------------- -DROP FUNCTION IF EXISTS `_jdmarray`; -DELIMITER ;; -CREATE DEFINER=`root`@`localhost` FUNCTION `_jdmarray`(`m` smallint) RETURNS smallint(2) -BEGIN -# Copyright (C) 2009-2012 Mohammad Saleh Souzanchi -# WebLog : http://soozanchi.ir -# Version V1.0.1 - - CASE m - WHEN 0 THEN RETURN 31; - WHEN 1 THEN RETURN 31; - WHEN 2 THEN RETURN 31; - WHEN 3 THEN RETURN 31; - WHEN 4 THEN RETURN 31; - WHEN 5 THEN RETURN 31; - WHEN 6 THEN RETURN 30; - WHEN 7 THEN RETURN 30; - WHEN 8 THEN RETURN 30; - WHEN 9 THEN RETURN 30; - WHEN 10 THEN RETURN 30; - WHEN 11 THEN RETURN 29; - END CASE; - -END;; -DELIMITER ; - --- ---------------------------- --- Function structure for `_jdmarray2` --- ---------------------------- -DROP FUNCTION IF EXISTS `_jdmarray2`; -DELIMITER ;; -CREATE DEFINER=`root`@`localhost` FUNCTION `_jdmarray2`(`m` smallint) RETURNS smallint(2) -BEGIN -# Copyright (C) 2011-2012 Mehran . M . Spitman -# WebLog :spitman.azdaa.com -# Version V1.0.1 - - CASE m - WHEN 1 THEN RETURN 31; - WHEN 2 THEN RETURN 31; - WHEN 3 THEN RETURN 31; - WHEN 4 THEN RETURN 31; - WHEN 5 THEN RETURN 31; - WHEN 6 THEN RETURN 31; - WHEN 7 THEN RETURN 30; - WHEN 8 THEN RETURN 30; - WHEN 9 THEN RETURN 30; - WHEN 10 THEN RETURN 30; - WHEN 11 THEN RETURN 30; - WHEN 12 THEN RETURN 29; - END CASE; - -END;; -DELIMITER ; - --- ---------------------------- --- Function structure for `pdate` --- ---------------------------- -DROP FUNCTION IF EXISTS `pdate`; -DELIMITER ;; -CREATE DEFINER=`root`@`localhost` FUNCTION `pdate`(`gdate` datetime) RETURNS char(100) CHARSET utf8 -BEGIN -# Copyright (C) 2009-2012 Mohammad Saleh Souzanchi -# WebLog : http://soozanchi.ir -# Version V1.0.2 - - DECLARE - i, - gy, gm, gd, - g_day_no, j_day_no, j_np, - jy, jm, jd INT DEFAULT 0; /* Can be unsigned int? */ - DECLARE resout char(100); - DECLARE ttime CHAR(20); - - SET gy = YEAR(gdate) - 1600; - SET gm = MONTH(gdate) - 1; - SET gd = DAY(gdate) - 1; - SET ttime = TIME(gdate); - SET g_day_no = ((365 * gy) + __mydiv(gy + 3, 4) - __mydiv(gy + 99, 100) + __mydiv (gy + 399, 400)); - SET i = 0; - - WHILE (i < gm) do - SET g_day_no = g_day_no + _gdmarray(i); - SET i = i + 1; - END WHILE; - - IF gm > 1 and ((gy % 4 = 0 and gy % 100 <> 0)) or gy % 400 = 0 THEN - SET g_day_no = g_day_no + 1; - END IF; - - SET g_day_no = g_day_no + gd; - SET j_day_no = g_day_no - 79; - SET j_np = j_day_no DIV 12053; - SET j_day_no = j_day_no % 12053; - SET jy = 979 + 33 * j_np + 4 * __mydiv(j_day_no, 1461); - SET j_day_no = j_day_no % 1461; - - IF j_day_no >= 366 then - SET jy = jy + __mydiv(j_day_no - 1, 365); - SET j_day_no = (j_day_no - 1) % 365; - END IF; - - SET i = 0; - - WHILE (i < 11 and j_day_no >= _jdmarray(i)) do - SET j_day_no = j_day_no - _jdmarray(i); - SET i = i + 1; - END WHILE; - - SET jm = i + 1; - SET jd = j_day_no + 1; - SET resout = CONCAT_WS ('-', jy, jm, jd); - - IF (ttime <> '00:00:00') then - SET resout = CONCAT_WS(' ', resout, ttime); - END IF; - - RETURN resout; -END;; -DELIMITER ; - --- ---------------------------- --- Function structure for `PMONTH` --- ---------------------------- -DROP FUNCTION IF EXISTS `PMONTH`; -DELIMITER ;; -CREATE DEFINER=`root`@`localhost` FUNCTION `PMONTH`(`gdate` datetime) RETURNS char(100) CHARSET utf8 -BEGIN -# Copyright (C) 2009-2012 Mohammad Saleh Souzanchi -# WebLog : http://soozanchi.ir -# Version V1.0.2 - - DECLARE - i, - gy, gm, gd, - g_day_no, j_day_no, j_np, - jy, jm, jd INT DEFAULT 0; /* Can be unsigned int? */ - DECLARE resout char(100); - DECLARE ttime CHAR(20); - - SET gy = YEAR(gdate) - 1600; - SET gm = MONTH(gdate) - 1; - SET gd = DAY(gdate) - 1; - SET ttime = TIME(gdate); - SET g_day_no = ((365 * gy) + __mydiv(gy + 3, 4) - __mydiv(gy + 99, 100) + __mydiv(gy + 399, 400)); - SET i = 0; - - WHILE (i < gm) do - SET g_day_no = g_day_no + _gdmarray(i); - SET i = i + 1; - END WHILE; - - IF gm > 1 and ((gy % 4 = 0 and gy % 100 <> 0)) or gy % 400 = 0 THEN - SET g_day_no = g_day_no + 1; - END IF; - - SET g_day_no = g_day_no + gd; - SET j_day_no = g_day_no - 79; - SET j_np = j_day_no DIV 12053; - set j_day_no = j_day_no % 12053; - SET jy = 979 + 33 * j_np + 4 * __mydiv(j_day_no, 1461); - SET j_day_no = j_day_no % 1461; - - IF j_day_no >= 366 then - SET jy = jy + __mydiv(j_day_no - 1, 365); - SET j_day_no =(j_day_no - 1) % 365; - END IF; - - SET i = 0; - - WHILE (i < 11 and j_day_no >= _jdmarray(i)) do - SET j_day_no = j_day_no - _jdmarray(i); - SET i = i + 1; - END WHILE; - - SET jm = i + 1; - SET jd = j_day_no + 1; - RETURN jm; -END;; -DELIMITER ; - --- ---------------------------- --- Function structure for `pmonthname` --- ---------------------------- -DROP FUNCTION IF EXISTS `pmonthname`; -DELIMITER ;; -CREATE DEFINER=`root`@`localhost` FUNCTION `pmonthname`(`gdate` datetime) RETURNS varchar(100) CHARSET utf8 -BEGIN -# Copyright (C) 2009-2012 Mohammad Saleh Souzanchi -# WebLog : http://soozanchi.ir -# Version V1.0.1 - - CASE PMONTH(gdate) - WHEN 1 THEN RETURN 'فروردین'; - WHEN 2 THEN RETURN 'اردیبهشت'; - WHEN 3 THEN RETURN 'خرداد'; - WHEN 4 THEN RETURN 'تیر'; - WHEN 5 THEN RETURN 'مرداد'; - WHEN 6 THEN RETURN 'شهریور'; - WHEN 7 THEN RETURN 'مهر'; - WHEN 8 THEN RETURN 'آبان'; - WHEN 9 THEN RETURN 'آذر'; - WHEN 10 THEN RETURN 'دی'; - WHEN 11 THEN RETURN 'بهمن'; - WHEN 12 THEN RETURN 'اسفند'; - END CASE; - -END;; -DELIMITER ; - --- ---------------------------- --- Function structure for `pyear` --- ---------------------------- -DROP FUNCTION IF EXISTS `pyear`; -DELIMITER ;; -CREATE DEFINER=`root`@`localhost` FUNCTION `pyear`(`gdate` datetime) RETURNS char(100) CHARSET utf8 -BEGIN -# Copyright (C) 2009-2012 Mohammad Saleh Souzanchi -# WebLog : http://soozanchi.ir -# Version V1.0.1 - - DECLARE - i, - gy, gm, gd, - g_day_no, j_day_no, j_np, - jy, jm, jd INT DEFAULT 0; /* Can be unsigned int? */ - DECLARE resout char(100); - DECLARE ttime CHAR(20); - - SET gy = YEAR(gdate) - 1600; - SET gm = MONTH(gdate) - 1; - SET gd = DAY(gdate) - 1; - SET ttime = TIME(gdate); - SET g_day_no = ((365 * gy) + __mydiv(gy + 3, 4) - __mydiv(gy + 99, 100) + __mydiv(gy + 399, 400)); - SET i = 0; - - WHILE (i < gm) do - SET g_day_no = g_day_no + _gdmarray(i); - SET i = i + 1; - END WHILE; - - IF gm > 1 and ((gy % 4 = 0 and gy % 100 <> 0)) or gy % 400 = 0 THEN - SET g_day_no = g_day_no + 1; - END IF; - - SET g_day_no = g_day_no + gd; - SET j_day_no = g_day_no - 79; - SET j_np = j_day_no DIV 12053; - set j_day_no = j_day_no % 12053; - SET jy = 979 + 33 * j_np + 4 * __mydiv(j_day_no, 1461); - SET j_day_no = j_day_no % 1461; - - IF j_day_no >= 366 then - SET jy = jy + __mydiv(j_day_no - 1, 365); - SET j_day_no = (j_day_no - 1) % 365; - END IF; - - SET i = 0; - - WHILE (i < 11 and j_day_no >= _jdmarray(i)) do - SET j_day_no = j_day_no - _jdmarray(i); - SET i = i + 1; - END WHILE; - - SET jm = i + 1; - SET jd = j_day_no + 1; - RETURN jy; -END;; -DELIMITER ; - --- ---------------------------- --- Function structure for `pday` --- ---------------------------- -DROP FUNCTION IF EXISTS `pday`; -DELIMITER ;; -CREATE DEFINER=`root`@`localhost` FUNCTION `pday`(`gdate` datetime) RETURNS char(100) CHARSET utf8 -BEGIN -# Copyright (C) 2011-2012 Mohammad Saleh Souzanchi, Mehran . M . Spitman -# WebLog : http://soozanchi.ir, spitman.azdaa.com -# Version V1.0.1 - - DECLARE - i, - gy, gm, gd, - g_day_no, j_day_no, j_np, - jy, jm, jd INT DEFAULT 0; /* Can be unsigned int? */ - DECLARE resout char(100); - DECLARE ttime CHAR(20); - - SET gy = YEAR(gdate) - 1600; - SET gm = MONTH(gdate) - 1; - SET gd = DAY(gdate) - 1; - SET ttime = TIME(gdate); - SET g_day_no = ((365 * gy) + __mydiv(gy + 3, 4) - __mydiv(gy + 99 , 100) + __mydiv(gy + 399, 400)); - SET i = 0; - - WHILE (i < gm) do - SET g_day_no = g_day_no + _gdmarray(i); - SET i = i + 1; - END WHILE; - - IF gm > 1 and ((gy % 4 = 0 and gy % 100 <> 0)) or gy % 400 = 0 THEN - SET g_day_no = g_day_no + 1; - END IF; - - SET g_day_no = g_day_no + gd; - SET j_day_no = g_day_no - 79; - SET j_np = j_day_no DIV 12053; - SET j_day_no = j_day_no % 12053; - SET jy = 979 + 33 * j_np + 4 * __mydiv(j_day_no, 1461); - SET j_day_no = j_day_no % 1461; - - IF j_day_no >= 366 then - SET jy = jy + __mydiv(j_day_no - 1, 365); - SET j_day_no = (j_day_no-1) % 365; - END IF; - - SET i = 0; - - WHILE (i < 11 and j_day_no >= _jdmarray(i)) do - SET j_day_no = j_day_no - _jdmarray(i); - SET i = i + 1; - END WHILE; - - SET jm = i + 1; - SET jd = j_day_no + 1; - RETURN jd; -END;; -DELIMITER ; - - --- ---------------------------- --- Function structure for `_gdmarray2` --- ---------------------------- -DROP FUNCTION IF EXISTS `_gdmarray2`; -DELIMITER ;; -CREATE DEFINER=`root`@`localhost` FUNCTION `_gdmarray2`(`m` smallint, `k` SMALLINT) RETURNS smallint(2) -BEGIN -# Copyright (C) 2011-2012 Mehran . M . Spitman -# WebLog :spitman.azdaa.com -# Version V1.0 - - CASE m - WHEN 0 THEN RETURN 31; - WHEN 1 THEN RETURN 28+k; - WHEN 2 THEN RETURN 31; - WHEN 3 THEN RETURN 30; - WHEN 4 THEN RETURN 31; - WHEN 5 THEN RETURN 30; - WHEN 6 THEN RETURN 31; - WHEN 7 THEN RETURN 31; - WHEN 8 THEN RETURN 30; - WHEN 9 THEN RETURN 31; - WHEN 10 THEN RETURN 30; - WHEN 11 THEN RETURN 31; - END CASE; - - -END;; -DELIMITER ; - --- ---------------------------- --- Function structure for `gdate` --- ---------------------------- -DROP FUNCTION IF EXISTS `gdate`; -DELIMITER ;; -CREATE DEFINER=`root`@`localhost` FUNCTION `gdate`(`jy` smallint, `jm` smallint, `jd` smallint) RETURNS datetime -BEGIN -# Copyright (C) 2011-2012 Mehran . M . Spitman -# WebLog :spitman.azdaa.com -# Version V1.0.1 - - DECLARE - i, j, e, k, mo, - gy, gm, gd, - g_day_no, j_day_no, bkab, jmm, mday, g_day_mo, bkab1, j1 - INT DEFAULT 0; /* Can be unsigned int? */ - DECLARE resout char(100); - DECLARE fdate datetime; - - - SET bkab = __mymod(jy,33); - - IF (bkab = 1 or bkab= 5 or bkab = 9 or bkab = 13 or bkab = 17 or bkab = 22 or bkab = 26 or bkab = 30) THEN - SET j=1; - end IF; - - SET bkab1 = __mymod(jy+1,33); - - IF (bkab1 = 1 or bkab1= 5 or bkab1 = 9 or bkab1 = 13 or bkab1 = 17 or bkab1 = 22 or bkab1 = 26 or bkab1 = 30) THEN - SET j1=1; - end IF; - - CASE jm - WHEN 1 THEN IF jd > _jdmarray2(jm) or jd <= 0 THEN SET e=1; end IF; - WHEN 2 THEN IF jd > _jdmarray2(jm) or jd <= 0 THEN SET e=1; end IF; - WHEN 3 THEN IF jd > _jdmarray2(jm) or jd <= 0 THEN SET e=1; end IF; - WHEN 4 THEN IF jd > _jdmarray2(jm) or jd <= 0 THEN SET e=1; end IF; - WHEN 5 THEN IF jd > _jdmarray2(jm) or jd <= 0 THEN SET e=1; end IF; - WHEN 6 THEN IF jd > _jdmarray2(jm) or jd <= 0 THEN SET e=1; end IF; - WHEN 7 THEN IF jd > _jdmarray2(jm) or jd <= 0 THEN SET e=1; end IF; - WHEN 8 THEN IF jd > _jdmarray2(jm) or jd <= 0 THEN SET e=1; end IF; - WHEN 9 THEN IF jd > _jdmarray2(jm) or jd <= 0 THEN SET e=1; end IF; - WHEN 10 THEN IF jd > _jdmarray2(jm) or jd <= 0 THEN SET e=1; end IF; - WHEN 11 THEN IF jd > _jdmarray2(jm) or jd <= 0 THEN SET e=1; end IF; - WHEN 12 THEN IF jd > _jdmarray2(jm)+j or jd <= 0 THEN SET e=1; end IF; - END CASE; - IF jm > 12 or jm <= 0 THEN SET e=1; end IF; - IF jy <= 0 THEN SET e=1; end IF; - - IF e>0 THEN - RETURN 0; - end IF; - - IF (jm>=11) or (jm=10 and jd>=11 and j=0) or (jm=10 and jd>11 and j=1) THEN - SET i=1; - end IF; - SET gy = jy + 621 + i; - - IF (__mymod(gy,4)=0) THEN - SET k=1; - end IF; - - IF (__mymod(gy,100)=0) and (__mymod(gy,400)<>0) THEN - SET k=0; - END IF; - - SET jmm=jm-1; - - WHILE (jmm > 0) do - SET mday=mday+_jdmarray2(jmm); - SET jmm=jmm-1; - end WHILE; - - SET j_day_no=(jy-1)*365+(__mydiv(jy,4))+mday+jd; - SET g_day_no=j_day_no+226899; - - - SET g_day_no=g_day_no-(__mydiv(gy-1,4)); - SET g_day_mo=__mymod(g_day_no,365); - - IF (k=1 and j=1) THEN - IF (g_day_mo=0) THEN - RETURN CONCAT_WS('-',gy,'12','30'); - END IF; - IF (g_day_mo=1) THEN - RETURN CONCAT_WS('-',gy,'12','31'); - END IF; - END IF; - - IF (g_day_mo=0) THEN - RETURN CONCAT_WS('-',gy,'12','31'); - END IF; - - - SET mo=0; - SET gm=gm+1; - while g_day_mo>_gdmarray2(mo,k) do - SET g_day_mo=g_day_mo-_gdmarray2(mo,k); - SET mo=mo+1; - SET gm=gm+1; - end WHILE; - SET gd=g_day_mo; - - RETURN CONCAT_WS('-',gy,gm,gd); -END;; -DELIMITER ; - --- ---------------------------- --- Function structure for `gdatestr` --- ---------------------------- -DROP FUNCTION IF EXISTS `gdatestr`; -DELIMITER ;; -CREATE DEFINER=`root`@`localhost` FUNCTION `gdatestr`(`jdat` char(10)) RETURNS datetime -BEGIN -# Copyright (C) 2011-2012 Mehran . M . Spitman -# WebLog spitman.azdaa.com -# Version V1.0.1 - - DECLARE - i, j, e, k, mo, - gy, gm, gd, - g_day_no, j_day_no, bkab, jmm, mday, g_day_mo, jd, jy, jm,bkab1,j1 - INT DEFAULT 0; /* ### Can't be unsigned int! ### */ - DECLARE resout char(100); - DECLARE jdd, jyd, jmd, jt varchar(100); - DECLARE fdate datetime; - - SET jdd = SUBSTRING_INDEX(jdat, '/', -1); - SET jt = SUBSTRING_INDEX(jdat, '/', 2); - SET jyd = SUBSTRING_INDEX(jt, '/', 1); - SET jmd = SUBSTRING_INDEX(jt, '/', -1); - SET jd = CAST(jdd as SIGNED); - SET jy = CAST(jyd as SIGNED); - SET jm = CAST(jmd as SIGNED); - - - SET bkab = __mymod(jy,33); - - IF (bkab = 1 or bkab= 5 or bkab = 9 or bkab = 13 or bkab = 17 or bkab = 22 or bkab = 26 or bkab = 30) THEN - SET j=1; - end IF; - - SET bkab1 = __mymod(jy+1,33); - - IF (bkab1 = 1 or bkab1= 5 or bkab1 = 9 or bkab1 = 13 or bkab1 = 17 or bkab1 = 22 or bkab1 = 26 or bkab1 = 30) THEN - SET j1=1; - end IF; - - CASE jm - WHEN 1 THEN IF jd > _jdmarray2(jm) or jd <= 0 THEN SET e=1; end IF; - WHEN 2 THEN IF jd > _jdmarray2(jm) or jd <= 0 THEN SET e=1; end IF; - WHEN 3 THEN IF jd > _jdmarray2(jm) or jd <= 0 THEN SET e=1; end IF; - WHEN 4 THEN IF jd > _jdmarray2(jm) or jd <= 0 THEN SET e=1; end IF; - WHEN 5 THEN IF jd > _jdmarray2(jm) or jd <= 0 THEN SET e=1; end IF; - WHEN 6 THEN IF jd > _jdmarray2(jm) or jd <= 0 THEN SET e=1; end IF; - WHEN 7 THEN IF jd > _jdmarray2(jm) or jd <= 0 THEN SET e=1; end IF; - WHEN 8 THEN IF jd > _jdmarray2(jm) or jd <= 0 THEN SET e=1; end IF; - WHEN 9 THEN IF jd > _jdmarray2(jm) or jd <= 0 THEN SET e=1; end IF; - WHEN 10 THEN IF jd > _jdmarray2(jm) or jd <= 0 THEN SET e=1; end IF; - WHEN 11 THEN IF jd > _jdmarray2(jm) or jd <= 0 THEN SET e=1; end IF; - WHEN 12 THEN IF jd > _jdmarray2(jm)+j or jd <= 0 THEN SET e=1; end IF; - END CASE; - IF jm > 12 or jm <= 0 THEN SET e=1; end IF; - IF jy <= 0 THEN SET e=1; end IF; - - IF e>0 THEN - RETURN 0; - end IF; - - IF (jm>=11) or (jm=10 and jd>=11 and j=0) or (jm=10 and jd>11 and j=1) THEN - SET i=1; - end IF; - SET gy = jy + 621 + i; - - IF (__mymod(gy,4)=0) THEN - SET k=1; - end IF; - - IF (__mymod(gy,100)=0) and (__mymod(gy,400)<>0) THEN - SET k=0; - END IF; - - SET jmm=jm-1; - - WHILE (jmm > 0) do - SET mday=mday+_jdmarray2(jmm); - SET jmm=jmm-1; - end WHILE; - - SET j_day_no=(jy-1)*365+(__mydiv(jy,4))+mday+jd; - SET g_day_no=j_day_no+226899; - - - SET g_day_no=g_day_no-(__mydiv(gy-1,4)); - SET g_day_mo=__mymod(g_day_no,365); - - IF (k=1 and j=1) THEN - IF (g_day_mo=0) THEN - RETURN CONCAT_WS('-',gy,'12','30'); - END IF; - IF (g_day_mo=1) THEN - RETURN CONCAT_WS('-',gy,'12','31'); - END IF; - END IF; - - IF (g_day_mo=0) THEN - RETURN CONCAT_WS('-',gy,'12','31'); - END IF; - - - SET mo=0; - SET gm=gm+1; - while g_day_mo>_gdmarray2(mo,k) do - SET g_day_mo=g_day_mo-_gdmarray2(mo,k); - SET mo=mo+1; - SET gm=gm+1; - end WHILE; - SET gd=g_day_mo; - - RETURN CONCAT_WS('-',gy,gm,gd); -END;; -DELIMITER ; diff --git a/pdate-v2.sql b/persian_date_functions.sql similarity index 89% rename from pdate-v2.sql rename to persian_date_functions.sql index 452a9d0..821a2f5 100644 --- a/pdate-v2.sql +++ b/persian_date_functions.sql @@ -1,5 +1,5 @@ --- Gregorian - Jalali Date Converter Functions for Mysql, v2.0.0 --- Copyright (C) 2019 Mohammad Saleh Souzanchi(saleh.souzanchi@gmail.com|https://github.com/zoghal), Mehran . M . Spitman +-- Persian(Jalali) Date Converter Functions for Mysql, v3.0.0 +-- Copyright (C) 2009-2022 Mohammad Saleh Souzanchi(saleh.souzanchi@gmail.com | https://github.com/zoghal ), Mehran . M . Spitman -- -- This program is free software: you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by @@ -16,6 +16,30 @@ -- Pathed by Amir Mirmoeini (Added read-only + deterministic flags to prevent errors in new and strict MySql or MariaDB environments) +-- ---------------------------- +-- Function structure for `NUM_FA2EN` +-- ---------------------------- +CREATE DEFINER=`root`@`localhost` FUNCTION `NUM_FA2EN`(`strdate` CHAR ( 10 )) RETURNS char(10) CHARSET utf8 + READS SQL DATA + DETERMINISTIC +BEGIN +# Copyright (C) 2009-2022 Mohammad Saleh Souzanchi +# WebLog : https://soozanchi.ir +# Version V3.0.0 + + SET strdate = REPLACE ( strdate, '۱', '1' ); + SET strdate = REPLACE ( strdate, '۲', '2' ); + SET strdate = REPLACE ( strdate, '۳', '3' ); + SET strdate = REPLACE ( strdate, '۴', '4' ); + SET strdate = REPLACE ( strdate, '۵', '5' ); + SET strdate = REPLACE ( strdate, '۶', '6' ); + SET strdate = REPLACE ( strdate, '۷', '7' ); + SET strdate = REPLACE ( strdate, '۸', '8' ); + SET strdate = REPLACE ( strdate, '۹', '9' ); + SET strdate = REPLACE ( strdate, '۰', '0' ); + RETURN strdate; +END + -- ---------------------------- -- Function structure for `__mydiv` @@ -26,8 +50,8 @@ CREATE DEFINER=`root`@`localhost` FUNCTION `__mydiv`(`a` int, `b` int) RETURNS b READS SQL DATA DETERMINISTIC BEGIN -# Copyright (C) 2009-2019 Mohammad Saleh Souzanchi -# WebLog : www.saleh.soozanchi.ir +# Copyright (C) 2009-2022 Mohammad Saleh Souzanchi +# WebLog : https://soozanchi.ir # Version V2.0.0 return FLOOR(a / b); @@ -43,7 +67,7 @@ CREATE DEFINER=`root`@`localhost` FUNCTION `__mymod`(`a` int, `b` int) RETURNS b READS SQL DATA DETERMINISTIC BEGIN -# Copyright (C) 2011-2019 Mehran . M . Spitman +# Copyright (C) 2011-2022 Mehran . M . Spitman # WebLog :spitman.azdaa.com # Version V2.0.0 @@ -60,8 +84,8 @@ CREATE DEFINER=`root`@`localhost` FUNCTION `_gdmarray`(`m` smallint) RETURNS sma READS SQL DATA DETERMINISTIC BEGIN -# Copyright (C) 2009-2019 Mohammad Saleh Souzanchi -# WebLog : www.saleh.soozanchi.ir +# Copyright (C) 2009-2022 Mohammad Saleh Souzanchi +# WebLog : https://soozanchi.ir # Version V2.0.0 CASE m @@ -91,8 +115,8 @@ CREATE DEFINER=`root`@`localhost` FUNCTION `_jdmarray`(`m` smallint) RETURNS sma READS SQL DATA DETERMINISTIC BEGIN -# Copyright (C) 2009-2019 Mohammad Saleh Souzanchi -# WebLog : www.saleh.soozanchi.ir +# Copyright (C) 2009-2022 Mohammad Saleh Souzanchi +# WebLog : https://soozanchi.ir # Version V2.0.0 CASE m @@ -122,7 +146,7 @@ CREATE DEFINER=`root`@`localhost` FUNCTION `_jdmarray2`(`m` smallint) RETURNS sm READS SQL DATA DETERMINISTIC BEGIN -# Copyright (C) 2011-2019 Mehran . M . Spitman +# Copyright (C) 2011-2022 Mehran . M . Spitman # WebLog :spitman.azdaa.com # Version V2.0.0 @@ -153,8 +177,8 @@ CREATE DEFINER=`root`@`localhost` FUNCTION `pdate`(`gdate` datetime) RETURNS cha READS SQL DATA DETERMINISTIC BEGIN -# Copyright (C) 2009-2019 Mohammad Saleh Souzanchi -# WebLog : www.saleh.soozanchi.ir +# Copyright (C) 2009-2022 Mohammad Saleh Souzanchi +# WebLog : https://soozanchi.ir # Version V2.0.0 DECLARE @@ -221,8 +245,8 @@ CREATE DEFINER=`root`@`localhost` FUNCTION `PMONTH`(`gdate` datetime) RETURNS ch READS SQL DATA DETERMINISTIC BEGIN -# Copyright (C) 2009-2019 Mohammad Saleh Souzanchi -# WebLog : www.saleh.soozanchi.ir +# Copyright (C) 2009-2022 Mohammad Saleh Souzanchi +# WebLog : https://soozanchi.ir # Version V2.0.0 DECLARE @@ -280,8 +304,8 @@ CREATE DEFINER=`root`@`localhost` FUNCTION `pmonthname`(`gdate` datetime) RETURN READS SQL DATA DETERMINISTIC BEGIN -# Copyright (C) 2009-2019 Mohammad Saleh Souzanchi -# WebLog : www.saleh.soozanchi.ir +# Copyright (C) 2009-2022 Mohammad Saleh Souzanchi +# WebLog : https://soozanchi.ir # Version V2.0.0 CASE PMONTH(gdate) @@ -311,8 +335,8 @@ CREATE DEFINER=`root`@`localhost` FUNCTION `pyear`(`gdate` datetime) RETURNS cha READS SQL DATA DETERMINISTIC BEGIN -# Copyright (C) 2009-2019 Mohammad Saleh Souzanchi -# WebLog : www.saleh.soozanchi.ir +# Copyright (C) 2009-2022 Mohammad Saleh Souzanchi +# WebLog : https://soozanchi.ir # Version V2.0.0 DECLARE @@ -370,8 +394,8 @@ CREATE DEFINER=`root`@`localhost` FUNCTION `pday`(`gdate` datetime) RETURNS char READS SQL DATA DETERMINISTIC BEGIN -# Copyright (C) 2011-2019 Mohammad Saleh Souzanchi, Mehran . M . Spitman -# WebLog : www.saleh.soozanchi.ir, spitman.azdaa.com +# Copyright (C) 2011-2022 Mohammad Saleh Souzanchi, Mehran . M . Spitman +# WebLog : https://soozanchi.ir, spitman.azdaa.com # Version V2.0.0 DECLARE @@ -430,7 +454,7 @@ CREATE DEFINER=`root`@`localhost` FUNCTION `_gdmarray2`(`m` smallint, `k` SMALLI READS SQL DATA DETERMINISTIC BEGIN -# Copyright (C) 2011-2019 Mehran . M . Spitman +# Copyright (C) 2011-2022 Mehran . M . Spitman # WebLog :spitman.azdaa.com # Version V2.0.0 @@ -462,7 +486,7 @@ CREATE DEFINER=`root`@`localhost` FUNCTION `gdate`(`jy` smallint, `jm` smallint, READS SQL DATA DETERMINISTIC BEGIN -# Copyright (C) 2011-2019 Mehran . M . Spitman +# Copyright (C) 2011-2022 Mehran . M . Spitman # WebLog :spitman.azdaa.com # Version V2.0.0 @@ -570,7 +594,7 @@ CREATE DEFINER=`root`@`localhost` FUNCTION `gdatestr`(`jdat` char(10)) RETURNS d READS SQL DATA DETERMINISTIC BEGIN -# Copyright (C) 2011-2019 Mehran . M . Spitman +# Copyright (C) 2011-2022 Mehran . M . Spitman # WebLog spitman.azdaa.com # Version V2.0.0