با استفاده از تابع CURTIME() در MySQL یک پرس‌وجو بنویسید که همه ردیف‌های جدول appointments را که ستون start_time (از نوع TIME یا DATETIME) زمان شروع‌شان بعد از زمان فعلی سرور است نشان دهد.

12.0 بازدید آخرین ویرایش در 198 روز قبل ساعت 01:39

0.0

برای حل، از تابع CURTIME() که زمان فعلی سرور را به فرمت 'HH:MM:SS' برمی‌گرداند در شرط WHERE استفاده کنید؛ اگر ستون شما از نوع DATETIME است می‌توانید با تابع TIME(start_time) فقط بخش زمان را مقایسه کنید. نمونه کلی: SELECT * FROM appointments WHERE TIME(start_time) > CURTIME(); اجرای پرس‌وجو در محیط MySQL (خط فرمان یا ابزارهای مدیریت مثل MySQL Workbench) و بررسی نوع ستون و تنظیم منطقه زمانی سرور نکات مفیدی هستند.

توسط پژوهشگر در 198 روز قبل ساعت 01:39
دسته بندی ها: MySQL MySQL for beginner
reyhaneh در 198 روز قبل ساعت 01:40

استفاده از CURTIME() برای مقایسه با فیلدهای TIME مناسب است، اما اگر start_time از نوع DATETIME باشد بهتر است به جای TIME(start_time) > CURTIME() از start_time > NOW() استفاده کنید تا تاریخ هم در نظر گرفته شود. همچنین اعمال تابع روی ستون (مثل TIME(start_time)) باعث غیرفعال شدن ایندکس و افت عملکرد می‌شود، پس برای کوئری‌های حجیم از مقایسه مستقیم با مقدار DATETIME یا پارامتر باند استفاده کنید. در نهایت مطمئن شوید منطقه زمانی سرور/کلاینت هم‌خوانی دارد یا زمان‌ها را به UTC ذخیره کنید تا خطاهای مربوط به DST و منطقه زمانی جلوگیری شود.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری