امتیاز موضوع:
  • 1 رأی - میانگین امتیازات: 5
  • 1
  • 2
  • 3
  • 4
  • 5
تبدیل تاریخ میلادی به خورشیدی در mysql
نویسنده پیام
lord_viper غایب
مدیر کل انجمن
*****

ارسال‌ها: 3,949
موضوع‌ها: 352
تاریخ عضویت: بهمن ۱۳۸۴

تشکرها : 5193
( 9875 تشکر در 2650 ارسال )
ارسال: #1
تبدیل تاریخ میلادی به خورشیدی در mysql
امروزه اینترنت و وب جایگاه خودشو تو زندگی و کسب و کار باز کرده که وب پارسی هم از این قاعده مستثنی نیست یکی از عوامل مهم در وب پارسی استفاده از تاریخ خورشیدی میباشد روشهای مختلفی برای تبدیل تاریخ خورشیدی وجود دارد استفاده از اسکریپتهای تبدیل تاریخ مثل جلالی یا پارسی دیت یا نوشتن یک تابع در سطح بانک داده و استفاده از آن

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

کد:
CREATE DEFINER=`eleroboc_s8em4l0`@`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:نام جدول مورد نظر

[تصویر:  xshon.png]
از آن نماز که خود هیچ از آن نمی فهمی خدا چه فایده و بهره اکتساب کند
تفاخری نبود مر خدای عالم را که چون تو ابلهی او را خدا حساب کند
۱۱-آذر-۱۳۹۲, ۲۰:۴۰:۲۵
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : Ambassador, babyy, hadikh73, godvb
kamal_s67 آفلاین
تازه وارد

ارسال‌ها: 2
موضوع‌ها: 0
تاریخ عضویت: مهر ۱۳۸۸

تشکرها : 0
( 0 تشکر در 0 ارسال )
ارسال: #2
RE: تبدیل تاریخ میلادی به خورشیدی در mysql
دستتون درد نکنه ، مدت ها دنبال همین قطعه کد بودم
۱۹-خرداد-۱۳۹۵, ۱۴:۳۲:۰۷
ارسال‌ها
پاسخ
mhviolin آفلاین
تازه وارد

ارسال‌ها: 1
موضوع‌ها: 0
تاریخ عضویت: فروردین ۱۴۰۰

تشکرها : 0
( 0 تشکر در 0 ارسال )
ارسال: #3
RE: تبدیل تاریخ میلادی به خورشیدی در mysql
(۱۱-آذر-۱۳۹۲, ۲۰:۴۰:۲۵)lord_viper نوشته است: امروزه اینترنت و وب جایگاه خودشو تو زندگی و کسب و کار باز کرده که وب پارسی هم از این قاعده مستثنی نیست یکی از عوامل مهم در وب پارسی استفاده از تاریخ خورشیدی میباشد روشهای مختلفی برای تبدیل تاریخ خورشیدی وجود دارد استفاده از اسکریپتهای تبدیل تاریخ مثل جلالی یا پارسی دیت یا نوشتن یک تابع در سطح بانک داده و استفاده از آن

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

کد:
CREATE DEFINER=`eleroboc_s8em4l0`@`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:نام جدول مورد نظر

سلام خیلی ممنونم از راهنماییتون اگر امکانش هست تو موضوع های مرتبط هم اموزش هایی قرار بدین.
۲۲-فروردین-۱۴۰۰, ۱۴:۳۹:۵۸
ارسال‌ها
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  [آموزشی] ریست پسورد mysql lord_viper 2 3,507 ۲۴-اردیبهشت-۱۳۹۲, ۱۶:۵۶:۲۸
آخرین ارسال: lord_viper
  [آموزشی] ساده تر کردن INsert و Update در mysql lord_viper 2 2,890 ۲۴-اردیبهشت-۱۳۹۲, ۱۶:۵۳:۴۰
آخرین ارسال: lord_viper
  آخرین رکورد جدول mysql mohamadpk 2 7,252 ۰۷-مرداد-۱۳۹۱, ۱۶:۰۱:۰۲
آخرین ارسال: amo-mohsen
  ارتباط با پایگاه داده mysql به صورت ریموت xxhacker 9 14,033 ۲۹-اردیبهشت-۱۳۸۹, ۲۱:۱۰:۳۸
آخرین ارسال: xxhacker
  طریقه ارتباط mysql با دلفی؟ dareini 2 5,678 ۰۱-اسفند-۱۳۸۸, ۲۳:۵۰:۴۵
آخرین ارسال: dareini
  آپلود عکس در mysql vahideh 2 7,792 ۰۷-شهریور-۱۳۸۸, ۲۱:۴۱:۳۸
آخرین ارسال: dead.kitten
  اشکال در جستجوی فارسی در mysql shamina 1 5,743 ۰۷-شهریور-۱۳۸۸, ۲۱:۴۰:۲۵
آخرین ارسال: dead.kitten
  کمک برای MYSQL Query blackhat.net 4 5,268 ۱۷-تير-۱۳۸۸, ۱۰:۰۱:۲۲
آخرین ارسال: blackhat.net
Rolleyes دانلود آخرین ورژن MYSQL K1MACLIN 4 13,171 ۲۰-اردیبهشت-۱۳۸۸, ۰۴:۱۵:۱۸
آخرین ارسال: K1MACLIN
  قربونش برم mysql lolohacko 3 5,649 ۲۰-شهریور-۱۳۸۷, ۲۱:۰۷:۴۵
آخرین ارسال: far_222000

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 3 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS