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