سؤال

مرحبا كل شيء، لدي هذا SQL

SELECT DATE_ADD( '2009-'+ MONTH( NOW() ) +'-01' , INTERVAL -1 MONTH );

لا أستطيع الحصول عليها للعمل، ما الذي أجعله خطأ هنا؟

خزانات للمساعدة.

هل كانت مفيدة؟

المحلول

SELECT CONCAT_WS('-', '2009', MONTH(NOW()), '01') - INTERVAL 1 MONTH

نصائح أخرى

إنها تسلسل التاريخ الذي لا يعمل. يقوم بتحويل السلاسل إلى الأرقام، لذلك يمكنك الحصول على 2009 + 11 +1 = 2019، والذي فشل في التحويل إلى موعد.

بدلا من التمسك بتاريخ من الأوتار، يمكنك استخدام وظيفة Last_day للحصول على اليوم الأخير من الشهر الحالي، أضف يوم واحد للوصول إلى اليوم التالي من الشهر التالي، ثم اطرح شهرين للوصول إلى اليوم الأول من الشهر الماضى:

select last_day(now()) + interval 1 day - interval 2 month;

بالإضافة إلى مشغل حسابي، يجب عليك استخدام concat.

SELECT DATE_ADD( concat('2009-',MONTH(NOW()),'-01') , INTERVAL -1 MONTH )

أو أفضل

select date(now()) -  interval day(NOW())-1 day - interval 1 month;

(هذا سيعمل أيضا في عام 2010)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top