2017-07-28 3 views
0

私はこのコードdate > timestampadd(year, -10, NOW())を使用して、10歳未満のデータを返します。私は代わりの2007年7月28日(10年前に、今から())2007年1月1日必要年の初めから10歳未満の行を取得する

このdate > timestampadd(year, -10, YEAR(NOW()))ような何かが仕事と期待していたが、それはしていません。

どうすればこの問題を解決できますか?

答えて

1

ちょうどあなたがSTR_TO_DATE()を使用して必要な任意の日付を作成します。

YEAR(now)は今年あな​​たを与えるだろう。

Sql DEMO

それからちょうど好き、それを構築する:

SELECT STR_TO_DATE(concat(YEAR(now()), '/01/01'), "%Y/%m/%d") 
+0

'date_trunc()は'まさにそのとき、なぜそれを上には、複雑? – Trojan404

+0

私はそれが十分に一般的ではないと思いますが、それは私だけです。この状態では、まだ/ 01/01を置く必要はありません。 date_truncを使用すると、取得する特定のものを指定することができます。それ以外のものはすべて0または1にデフォルト設定されます。 – Trojan404

+0

月の15日が必要だった場合は、date_truncを使用する必要はありません。日付の一部を切り捨てる必要がないので、単に 'datediff()'を使うことができます。 – Trojan404