我在数据库表中有两个名字:
我已经根据sql表中的这两个名字值设置了出生日计算,这里是代码:
$sql .= "FLOOR((TO_DAYS(GREATEST(IF(decease_date='0000-00-00',CURRENT_DATE,decease_date),IFNULL(decease_date,CURRENT_DATE))) - TO_DAYS(birth_date)) / 365) AS age";
我已通过jDateTime方法将localDate设置为另一个日历,即波斯日历:
这是代码:
public static function localDate($date = "")
{$local = "";
date_default_timezone_set('Asia/Tehran');
switch (strlen($date))
{default: // Ymd
{
if (( $date < '19700101'))
{
$local = $date;
break;
}
else
{
header('Content-Type: text/html; charset=UTF-8');
require_once dirname(__FILE__) . '/jdatetime.class.php';
$local = jDateTime::date("l j F Y", strtotime($date), true, true, 'Asia/Tehran');
break;}
}
break;}
return $local;}
问题是 CURRENT_DATE 在sql中它将根据公历日历计算当前日期而不是 CURRENT_DATE 在波斯日历中。
这就是为什么当我们在公历和波斯日历中设定出生日时,我的代码将根据格里高利历来计算患者年龄。
这是两个不同日历日期的计算样本:
问:如何根据波斯日历在SQL中设置当前日期?
提前致谢。
答案 0 :(得分:0)
您可以执行
,而不是在SQL中使用CURRENT_DATE$persian_current_date = jDateTime::date("Y-m-d", false, true, true, 'Asia/Tehran');
$sql .= "FLOOR((TO_DAYS(GREATEST(IF(decease_date='0000-00-00','$persian_current_date',decease_date),IFNULL(decease_date,'$persian_current_date)))) - TO_DAYS(birth_date)) / 365) AS age";
更好的是,只需选择此人的生日和已故日期,然后在PHP中进行计算,这样您就可以使用计算DAYS / 365以外年龄的方法(无法计算闰年)。