2017-02-06 28 views
0

我在我的表中訂閱開始日期。我想提醒我的客戶介紹訂閱會結束(10月及1年間是我的用戶的報警時間)在MySQL中使用DATE_ADD後選擇列值的日期

這是我的查詢:

SELECT customer_name, start_date 
FROM subscription 
WHERE start_date between DATE_ADD(start_date, INTERVAL 1 YEAR) 
and DATE_ADD(start_date, INTERVAL 305 DAY) 

我試過小時,沒有什麼鍛鍊。任何人都可以幫助我嗎?

+0

不應該減去嗎?這將工作,如果這將是到期日期而不是開始日期。而且你無法將日期與日期進行比較 - 1年。這個不成立。 'SELECT * FROM subscription WHERE start_date BETWEEN DATE_SUB(CURDATE(),INTERVAL 1 YEAR)和DATE_SUB(CURDATE(),INTERVAL 305 DAY)' –

+0

start_date如何在兩個日期之間加入start_date?這將返回0個結果。 SELECT customer_name,start_date FROM subscription WHERE stop_date BETWEEN DATE_ADD(start_date,INTERVAL 305 DAYS)AND DATE_ADD(start_date,INTERVAL 1 YEAR); –

回答

0

操作數爲BETWEEN需要按順序排列。所以,較小的值需要是第一個:

SELECT customer_name, start_date 
FROM subscription 
WHERE start_date between DATE_ADD(start_date, INTERVAL 305 DAY) and 
         DATE_ADD(start_date, INTERVAL 1 YEAR); 

305天小於一年,所以需要先行。

0

當您在SQL Query的之間使用以獲取兩個值時,您必須首先在查詢中添加一個較少的值。

SELECT customer_name, start_date FROM subscription 
WHERE start_date between DATE_ADD(start_date, INTERVAL 305 DAY) and DATE_ADD(start_date, INTERVAL 1 YEAR) 

你試過這個查詢嗎?

+0

是的,我試過了。它不鍛鍊... – SHAKTHI

+0

這個查詢是沒有錯的。嘗試在SQL管理器上執行它,並檢查它是否提供了正確的答案。如果沒有,你必須檢查你的表,值,值類型。如果它給出正確的行,那麼你必須檢查你的編程代碼。 – ReadyFreddy

0

假設你記錄認購start_date,你想弄清楚,有10至1歲今天訂閱,您需要start_date從現在開始到10個月,從現在1年期間。

SELECT 
    customer_name, 
    start_date 
FROM subscription 
WHERE start_date BETWEEN 
    DATE_SUB(CURDATE(), INTERVAL 1 YEAR) AND 
    DATE_SUB(CURDATE(), INTERVAL 305 DAY) 
相關問題