कर सकते हैं मैं जुटना दो sql स्तंभ का उपयोग करें और यह में DATE_ADD समारोह

0

सवाल

मैं अटक गया है इस मुद्दे के साथ घंटे के लिए अब.

मैं एक मेज कहा जाता है की सदस्यता लें निम्नलिखित क्षेत्रों के साथ

  • आईडी (पूर्णांक)
  • sub_type (सप्ताह, महीने, साल) (Varchar)
  • sub_duration (int)
  • last_renewal (तारीख)

enter image description here

मैं मर्ज करना चाहते हैं के sub_duration और sub_type और इसे जोड़ने के लिए last_renewal (प्राप्त करने के लिए अवसान हो रहा है की तारीख), तो जांच के परिणाम है, अधिक से अधिक/की तुलना में कम वर्तमान तारीख । नीचे है कि मैं क्या किया है.

SELECT s.*
FROM subscription s
WHERE (SELECT DATE_ADD(s.last_renewal, INTERVAL (CONCAT(s.sub_duration), ' ', s.sub_type)))< CURDATE()

mysql sql
2021-11-24 03:14:18
2

सबसे अच्छा जवाब

1

आप कर सकते हैं गठबंधन CASE के साथ DATE_SUB प्राप्त करने के लिए समाप्ति की तारीख में एक सबक्वेरी. तो यह आसान की तुलना करने के लिए और प्रत्येक मामले का विश्लेषण.

उदाहरण के लिए:

select *,
  case when expiring_date < curdate() then 'Expired'
       when expiring_date > curdate() then 'Active'
       else 'Expires Today'
  end as status
from (
  select *,
    case when sub_type = 'week' then date_add(last_renewal, interval sub_duration week)
         when sub_type = 'month' then date_add(last_renewal, interval sub_duration month)
         when sub_type = 'year' then date_add(last_renewal, interval sub_duration year)
    end as expiring_date
  from subscription
) x

परिणाम:

 id  sub_type  sub_duration  last_renewal  expiring_date  status  
 --- --------- ------------- ------------- -------------- ------- 
 1   month     2             2021-04-12    2021-06-12     Expired 
 2   week      1             2021-07-11    2021-07-18     Expired 
 3   week      4             2021-11-11    2021-12-09     Active  

देखें चल रहा है पर उदाहरण DB बेला.

2021-11-24 03:52:03

धन्यवाद, भाई, यह तय मेरा मुद्दा है, लेकिन मैं बदल गया अपने date_sub करने के लिए date_add
Osah Prince

@OsahPrince तय की । किसी तरह मैं पढ़ने में भूलना विवरण.
The Impaler
0

अंतराल कीवर्ड को स्वीकार करता है, नहीं तार

आप उपयोग कर सकते हैं case when

महत्वपूर्ण भाग sql इस तरह से है

select *
  from (
select 'week' sub_type, 1 sub_duration union all
select 'year' sub_type, 1 sub_duration) s
 where case when s.sub_type = 'week'
            then DATE_ADD(now(), INTERVAL s.sub_duration week) 
            when s.sub_type = 'month'
            then DATE_ADD(now(), INTERVAL s.sub_duration month) 
            when s.sub_type = 'year'
            then DATE_ADD(now(), INTERVAL s.sub_duration year) 
       end > now()
2021-11-24 03:28:16

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में