2013-09-05 44 views
0

在我的mysql表中,有列startYear,startMonth,endYear,endMonth,它們都是整數(int)。在那裏我儲存了開始的年份和月份,並且結束了年份和月份。例如,我想存儲我的汽車分期付款的期限,所以startYear會有2012年,startMonth會有8個,endYear會有2019年,endMonth會有7檢查mysql的持續時間的最佳方法

沒問題,所以現在實際當前月份是9(9月份)和2013年,對於我來說,檢查當前月份和年份是否在startYear,startMonth和endYear,endMonth內的最佳方式/查詢是什麼?

+3

你可能要考慮使用柱DATE數據類型 – Ibu

回答

0

BETWEEN將檢查值是否大於或等於第一個數字,小於或等於第二個數字。

IF (MONTH(CURDATE()) BETWEEN startMonth and endMonth) AND (YEAR(CURDATE()) BETWEEN startYear and endYear)) 
+2

這是不正確的。如果開始的時間是2011年10月,結束時間是2013年2月。2012年1月應該在他們之間,但上面的公式會說它不是。 – Barmar

+0

嗯。非常好的一點。 – aynber

+0

是不正確的,但它讓我朝着正確的方向:) – imin

0

試試這個:

CURDATE() BETWEEN CONCAT_WS('-', startYear, startMonth, '01') 
        AND CONCAT_WS('-', endYear, endMonth, '31'); 
相關問題