2016-09-21 24 views
0

私はexpMonthexpYearの2つの列を含むテーブルを持っています。私はSELECT *に、NOW()より古い日付が必要です。私の問題は、私はのSQLでこの問題に近づく方法さえ知りません。なぜなら私は月と年しかないからです。また、指定された月の最大日数を見つけてそれに基づいて、日付を作成してその日付をNOW()と比較する情報をまとめなければなりません。私がオンラインで見たものから、あなたは実際に月と年があるからSQLに日付を実際に作成することはできません。年月日の計算

例:ちょうどいくつかの論理的/擬似コードであっ

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

SELECT * FROM Stacks WHERE createDate < NOW(); 

誰もこの問題に取り組む方法について提案はありますか?

+0

新しいもの、古いものを捨てる機能性と高性能で焼かれたものをお楽しみください – Drew

+0

ドリュー、私はこれを支配していたのが大好きですが、残念なことに、私のチームはその悪いdbデザインに悩まされています。 – user1830833

答えて

0

Hmmm。 。 。

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

MySQLは部分日付を処理できます。しかし、あなたが本当に欲しいのであれば、それがはっきりしていると思うなら、

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

を使うことができます。

str_to_date(CONCAT(exp_year、 ' - '、expmonth)、 '%Y-%のM-01')
+0

ゴードン・リノフ、間違っていれば私を修正しますが、それは日だけでなく、月と年だけをチェックします。その機能にその日を組み込むにはどうすればいいですか? – user1830833

+0

@ user1830833 。 。 MySQLは部分的な日付を扱うことができます。しかし、あなたが本当に望むなら、 'str_to_date(concat(exp_year、 ' - '、expmonth、 '-01')、 '%Y-%m-%d')

0

あなたは月の最後の日に日付を<今()

が必要な場合:

ここLAST_DAY(str_to_date(CONCAT(exp_year、 ' - '、expmonth)、 '%Y-%M-01'))は<()

私はにそれらの列を結合するためにそのエネルギーを注い検討する