با استفاده از جدول orders که ستون order_datetime از نوع DATETIME دارد، شناسه سفارش (order_id) و فقط قسمت زمان (HH:MM:SS) سفارشاتی را استخراج کنید که زمان آنها بعد از ساعت 12:00:00 ظهر است.

10.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:54

0.0

برای حل این مسئله از تابع TIME() در MySQL استفاده کنید تا بخش زمان از یک ستون DATETIME را جدا کنید و سپس در شرط WHERE آن را با '12:00:00' مقایسه کنید؛ مثلاً: SELECT order_id, TIME(order_datetime) AS order_time FROM orders WHERE TIME(order_datetime) > '12:00:00'. توجه داشته باشید که برای مقایسه سریع‌تر و بهره‌گیری از ایندکس‌ها می‌توانید به‌جای اعمال تابع روی ستون، بازه‌ی DATETIME مناسب را در WHERE مشخص کنید (مثلاً order_datetime >= '2025-01-01 12:00:00' AND order_datetime

توسط پژوهشگر در 201 روز قبل ساعت 03:54
دسته بندی ها: MySQL MySQL for beginner
reyhaneh در 201 روز قبل ساعت 04:46

استفاده از TIME(order_datetime) برای استخراج زمان مفید است، اما اجرا دادن تابع روی ستون می‌تواند مانع استفاده از ایندکس‌ها شود. برای کارایی بهتر، به‌جای استفاده از تابع روی داده، از بازهٔ DATETIME استفاده کنید، مثلاً order_datetime >= '2025-01-01 12:00:00' و order_datetime < '2025-01-02 00:00:00'. اگر قصد دارید در سریع‌ترین حالت روی جدول‌های بزرگ فیلتر انجام دهید، می‌توانید یک ستون GENERATED با TIME(order_datetime) بسازید و روی آن ایندکس ایجاد کنید. همچنین به بحث منطقه زمانی و تفاوت بین DATETIME و TIMESTAMP توجه کنید تا نمایش زمان در چند منطقهٔ زمانی به درستی باشد.

گزارش

1 پاسخ

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

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