View Full Version : سوال: شمسی شدن تاریخ در دستورات SQL
mahdieskandari
دوشنبه 09 مرداد 1402, 21:19 عصر
سلام دوستان. من جدیداً با یه خطایی توی یکی از برنامه هام مواجه شدم. توی برنامه دستور SQL برای جستجو بر اساس تاریخ (میلادی) نوشتم که همیشه درست کار میکرد. ولی از وقتی ویندوز 11 نصب کردم و تنظیم تاریخ ویندوز رو شمسی کردم، داخل سورس برنامه هم استرینگ جستجو رو بر اساس تاریخ شمسی انجام میده که با قاعدتاً با خطا مواجه میشه. چجوری جلوی تبدیل خودکار تاریخ داخل برنامه رو بگیرم؟
پرستو پارسایی
دوشنبه 09 مرداد 1402, 22:22 عصر
برای جلوگیری از تبدیل خودکار تاریخ داخل برنامه، میتوانید از روشهای زیر استفاده کنید:
1. استفاده از توابع تاریخ مستقل از تنظیمات سیستم: برخی زبانها و پایگاه دادهها توابعی را برای کار با تاریخها ارائه میدهند که مستقل از تنظیمات سیستم عمل میکنند. به عنوان مثال، در SQL Server میتوانید از توابع GETDATE() یا CURRENT_TIMESTAMP برای دریافت تاریخ میلادی استفاده کنید.
2. استفاده از توابع تبدیل تاریخ: اگر نیاز دارید تاریخ شمسی را به تاریخ میلادی تبدیل کنید، میتوانید از توابع تبدیل تاریخ موجود در زبان برنامهنویسی یا پایگاه داده خود استفاده کنید. برای مثال، در SQL Server میتوانید از تابع CONVERT() یا CAST() برای تبدیل تاریخ شمسی به تاریخ میلادی استفاده کنید.
3. استفاده از فرمتهای تاریخ مشخص: در برنامه خود، میتوانید فرمت مورد نظر خود را برای نمایش و جستجوی تاریخها استفاده کنید. به عنوان مثال، میتوانید از فرمت "yyyy-MM-dd" برای نمایش تاریخها در فرمت میلادی استفاده کنید.
با استفاده از این روشها، میتوانید جلوی تبدیل خودکار تاریخ داخل برنامه را بگیرید و جستجوی موردنظر خود را بر اساس تاریخ میلادی انجام دهید.
mahdieskandari
پنج شنبه 12 مرداد 1402, 17:24 عصر
برای جلوگیری از تبدیل خودکار تاریخ داخل برنامه، میتوانید از روشهای زیر استفاده کنید:
1. استفاده از توابع تاریخ مستقل از تنظیمات سیستم: برخی زبانها و پایگاه دادهها توابعی را برای کار با تاریخها ارائه میدهند که مستقل از تنظیمات سیستم عمل میکنند. به عنوان مثال، در SQL Server میتوانید از توابع GETDATE() یا CURRENT_TIMESTAMP برای دریافت تاریخ میلادی استفاده کنید.
2. استفاده از توابع تبدیل تاریخ: اگر نیاز دارید تاریخ شمسی را به تاریخ میلادی تبدیل کنید، میتوانید از توابع تبدیل تاریخ موجود در زبان برنامهنویسی یا پایگاه داده خود استفاده کنید. برای مثال، در SQL Server میتوانید از تابع CONVERT() یا CAST() برای تبدیل تاریخ شمسی به تاریخ میلادی استفاده کنید.
3. استفاده از فرمتهای تاریخ مشخص: در برنامه خود، میتوانید فرمت مورد نظر خود را برای نمایش و جستجوی تاریخها استفاده کنید. به عنوان مثال، میتوانید از فرمت "yyyy-MM-dd" برای نمایش تاریخها در فرمت میلادی استفاده کنید.
با استفاده از این روشها، میتوانید جلوی تبدیل خودکار تاریخ داخل برنامه را بگیرید و جستجوی موردنظر خود را بر اساس تاریخ میلادی انجام دهید.
ممنون از شما که وقت گذاشتید و پاسخ دادید.
راه حلی که خودم بعد از جستجو در منابع مختلف، پیدا کردم رو اینجا مینویسم. شاید برای دیگران هم مفید باشه:
مشکل برنامه من بخاطر تبدیل خودکار تقویم توی محیط برنامه نویسی بر اساس Culture فارسی توی تنظیمات ویندوز پیش میومد
راه حل هم اینه که در ابتدای برنامه این دستور رو قرار بدم
System.Threading.Thread.CurrentThread.CurrentCultu re = System.Globalization.CultureInfo.InvariantCulture
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.