2016-09-21 285 views
0

我有一個表,其中包含兩列,分別爲expMonthexpYear。我需要SELECT *日期早於NOW()。我的問題是,我甚至不知道如何在SQL中處理這個問題,因爲我只有一個月和一年。此外,我需要查找給定月份的最大天數,然後根據這些數據拼湊出信息以創建日期,然後將該日期與NOW()進行比較。從我在網上看到的情況來看,你不能僅僅從一個月和一年開始在SQL中創建一個日期。計算月份和年份的日期

實施例:

expMonth = 09 , expYear = 16. 
findNumberOfDays(expMonth) 
createDate(numberOfDaysforMonth,expMonth,expYear)` 

SELECT * FROM Stacks WHERE createDate < NOW(); 

這只是一些邏輯/僞代碼。

有沒有人有任何建議如何解決這個問題?

+0

我會考慮的能量投入到這些列組合成一個新的,放棄舊的兩個。然後享受一些出色的功能和高性能 – Drew

+0

德魯,如果我對此有任何控制權,我很樂意,但不幸的是,我的團隊堅持使用這種糟糕的分貝設計。 – user1830833

回答

0

嗯。 。 。

where str_to_date(concat(exp_year, '-', expmonth), '%Y-%m') < now() 

MySQL可以處理部分日期。但是,如果你真的想,你可以使用

str_to_date(concat(exp_year, '-', expmonth, '-01'), '%Y-%m-%d') < now() 

如果你認爲這是更清晰。

+0

Gordon Linoff,如果我錯了,請糾正我,但只檢查月份和年份,而不是一天。我如何在該功能中加入這一天? – user1830833

+0

@ user1830833。 。 。 MySQL可以處理部分日期。但是,如果你真的想,你可以使用'str_to_date(concat(exp_year,' - ',expmonth,'-01'),'%Y-%m-%d')

0

其中STR_TO_DATE(CONCAT(exp_year, ' - ',expmonth), '%Y-%M-01')< NOW()

如果需要的日期是本月的最後一天:

其中LAST_DAY(STR_TO_DATE(CONCAT(exp_year, ' - ',expmonth), '%Y-%M-01'))< NOW()

相關問題