mysql adddate () أو date_add () مع أعمدة الجدول؟
-
27-09-2019 - |
سؤال
كيف أفعل شيئًا مثل ما يلي
SELECT ADDDATE(t_invoice.last_bill_date, INTERVAL t_invoice.interval t_invoice.interval_unit)
FROM t_invoice
... حيث يكون العمود t_invoice.last_bill_date تاريخًا ، t_invoice.interval هو عدد صحيح و t_invoice.interval_unit هي سلسلة.
ما يعجبني في وظيفة AddDate () هو أنه إذا كتبت أ
SELECT ADDDATE('2010-01-31', INTERVAL 1 MONTH)
إنها تعيد بسهولة اليوم الأخير من فبراير-2010-02-28. لذلك يعلم أن شهر واحد يعني 28 يومًا لشهر فبراير (29 عامًا في Leap Year) ، 31 إذا كان الشهر الفردي ، 30 إذا كان شهرًا حتى شهرًا. أود الحفاظ على هذه الميزة في استفساري.
في الأساس ، أريد تحديد تاريخ الفاتورة التالية للشخص بناءً على تردد الفواتير المطلوب. هل هناك طريقة أفضل لتحقيق ذلك؟
المحلول
SELECT t_invoice.last_bill_date + INTERVAL
CASE t_invoice.interval_unit
WHEN 'minute' THEN t_invoice.interval
WHEN 'hour' THEN t_invoice.interval*60
WHEN // etc...
END MINUTE as col1
FROM t_invoice
أو
SELECT
CASE t_invoice.interval_unit
WHEN 'minute' THEN t_invoice.last_bill_date + INTERVAL t_invoice.interval MINUTE
WHEN 'hour' THEN t_invoice.last_bill_date + INTERVAL t_invoice.interval HOUR
WHEN // etc...
END as col1
FROM t_invoice
لا تنتمي إلى StackOverflow