فرض کنید جدولی به نام events با ستون event_id و event_time (نوع DATETIME) دارید؛ یک پرسوجو بنویسید که event_id و ثانیههای مقدار event_time را با استفاده از تابع SECOND استخراج کند و فقط ردیفهایی را نمایش دهد که ثانیه برابرِ 0 هستند.
2.0 بازدید آخرین ویرایش در 220 روز قبل ساعت 02:10 0.0
برای حل این مسئله از تابع داخلی MySQL به نام SECOND() استفاده کنید که مقدار ثانیه را از مقادیر TIME/DATETIME/TIMESTAMP برمیگرداند (مقدار بین 0 تا 59). یک پرسوجوی ساده SELECT بنویسید مثل SELECT event_id, SECOND(event_time) AS sec FROM events WHERE SECOND(event_time) = 0; نکتهها: میتوانید نام مستعار (alias) برای ستون ثانیه بگذارید، و در صورت نیاز با ORDER BY یا LIMIT نتایج را مرتب یا محدود کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
این روش با تابع SECOND() ثانیه مقدار event_time را استخراج میکند و فقط ردیفهایی را نمایش میدهد که مقدار ثانیه برابر 0 باشد. اگر سایز دادهها بزرگ باشد، عملکردی که با SECOND(event_time)=0 روی ستون اعمال میشود ممکن است از استفاده از ایندکس روی event_time جلوگیری کند؛ در این صورت میتوانید یک ستون محاسبهشده (generated/stored) مثل sec ایجاد کنید و روی آن ایندکس بسازید. توجه کنید SECOND() مقدار ثانیه را از 0 تا 59 بازمیگرداند و با دقتهای کمتر از ثانیه مانند میلیثانیه تفاوتی ندارد. نمونه پرسوجو ساده: SELECT event_id, SECOND(event_time) AS sec FROM events WHERE SECOND(event_time) = 0;
گزارش