برای طرح سوال و دسترسی به آموزش ها  کانال ما در تلگرام بپویندید  

تبدیل تاریخ میلادی به خورشیدی در mysql

امروزه اینترنت و وب جایگاه خودشو تو زندگی و کسب و کار باز کرده که وب پارسی هم از این قاعده مستثنی نیست یکی از عوامل مهم در وب پارسی استفاده از تاریخ خورشیدی میباشد روشهای مختلفی برای تبدیل تاریخ خورشیدی وجود دارد استفاده از اسکریپتهای تبدیل تاریخ مثل جلالی یا پارسی دیت یا نوشتن یک تابع در سطح بانک داده و استفاده از آن

کد زیر یک تابع برای تبدیل تاریخ در mysql + فورمت بندی آن میباشد

CREATE DEFINER=`root`@`localhost` FUNCTION `persian_date`(g_date date,outs varchar(10)) RETURNS varchar(20) CHARSET latin1
BEGIN
declare g_year int;
declare p_month varchar(2);
declare g_day int;
declare leap int;
declare pdate varchar(10);

set g_year=YEAR(g_date);
set g_day=DAYOFYEAR(g_date);

if g_day>79 then
	set g_day=g_day-79;
	set g_year=g_year-621;
else
	set leap=(g_year-1)%4;
	set g_year=g_year-622;
	if leap=0 then
		set g_day=g_day+287;
	else
		set g_day=g_day+286;
	end if;
END IF;

if leap=0 and g_day=366 then
set p_month=12;
set g_day=30;
else
case
when g_day>0 and g_day<32 then set p_month='01'; when g_day>31 and g_day<63 then set p_month='02'; set g_day=g_day-31; when g_day>62 and g_day<94 then set p_month='03'; set g_day=g_day-62; when g_day>93 and g_day<125 then set p_month='04'; set g_day=g_day-93; when g_day>124 and g_day<156 then set p_month='05'; set g_day=g_day-124; when g_day>155 and g_day<187 then set p_month='06'; set g_day=g_day-155; when g_day>186 and g_day<217 then set p_month='07'; set g_day=g_day-186; when g_day>216 and g_day<247 then set p_month='08'; set g_day=g_day-216; when g_day>246 and g_day<277 then set p_month='09'; set g_day=g_day-246; when g_day>276 and g_day<307 then set p_month='10'; set g_day=g_day-276; when g_day>306 and g_day<337 then set p_month='11'; set g_day=g_day-306; when g_day>336 then 
	set p_month='12';
	set g_day=g_day-336;
end case;
end if;

set outs=REPLACE(outs,'y',g_year);
set outs=REPLACE(outs,'m',p_month);
set outs=REPLACE(outs,'d',g_day);

RETURN outs;
END$$

روش استفاده

select persian_date(my_date,'y-m-d')as date from my_table

در اینجا
my_date :اسم ستونی از نوع Date که میخواهید انرا به تاریخ خورشیدی تبدیل کنید
my_table:نام جدول مورد نظر


انتشار

در

توسط

برچسب‌ها:

نظرات

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *