فرض کنید جدولی به نام 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 نتایج را مرتب یا محدود کنید.

توسط پژوهشگر در 220 روز قبل ساعت 02:10
دسته بندی ها: MySQL MySQL for beginner
reyhaneh در 220 روز قبل ساعت 10:44

این روش با تابع 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;

گزارش

1 پاسخ

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

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