2017-07-26 6 views
0

私はこの(現在)年の最後の日をMySQLで見つける方法を知っています。MySQLで去年の最後の日を見つけよう

SELECT LAST_DAY(DATE_ADD(NOW(), INTERVAL 12-MONTH(NOW()) MONTH)); //It shows this year (2017)'s last day. ==> 2017-12-31 

しかし、私はLAST YEARの最後の日を見つける方法がわかりません。

昨年の最終日を決定するためにどのようなクエリを入力する必要がありますか?例えば

: 感謝あなたの助けを

++++This Year++++ | ++++Last Year's Last Day++++ 

    2017   |  2016-12-31 
    2018   |  2017-12-31 
    2019   |  2018-12-31 
    2020   |  2019-12-31 

おかげで、。

+1

1月1日は、毎年の最初の日であることをむしろ私は誰としてファンやMySQLのデータの機能として大だけど、あなたは、12月31日は、毎年の最後の日であることを認識しない... – gview

+0

か。結果として、私はあなたが貧しい答えを受け入れたと思います。 – Strawberry

+0

公正であるために、答えは私が私のことを投稿する前に受け入れられました。私はすぐに答える時間がなかったので、私はそれを周回した時点で既にそれがあった。ゴードンの答えは大丈夫だと思うし、多くの場合、「最後の月曜日」やその性質の質問を見つけるのと同じように、同様のアプローチがそれを処理する最良の方法です。将来これを見いだす人には両方の考え方がありますので、このSOの質問は将来的には良いリソースになると思います。 – gview

答えて

1

わずか1年減算:私は変更決してこの特定の場合、年の最後の日(または最初)に、前述のように

SELECT DATE_SUB(LAST_DAY(DATE_ADD(NOW(), INTERVAL 12-MONTH(NOW()) MONTH)), INTERVAL 1 YEAR) 
+0

恐ろしい!ありがとう!私はあなたの答えを受け入れるでしょう。なぜなら、システムは10分で答えを受け入れることができないからです。 –

1

を、あなたは、はるかに簡単な解決策で行くことができます。

実際にはこれを行う方法はかなりあります。この場合、ゴードン氏が行ったように日時変換したり、負の間隔でDATE_ADDを使用したりすることはありません。ただ、標準のMySQLの日付形式の文字列で結構ですと、しかし、あなたが実際に必要がある場合、それは比較のために、MySQLの日付であることや、mysqlクライアントは、MySQLのデータ型を読んでいるので、その取得ほとんどの状況ではおそらく

SELECT CONCAT(YEAR(CURDATE())-1,'-12-31'); 

+------------------------------------+ 
| CONCAT(YEAR(CURDATE())-1,'-12-31') | 
+------------------------------------+ 
| 2016-12-31       | 
+------------------------------------+ 

あなたのサーバ側の言語で特別なことをするなら、それをSTR_TO_DATEを使って変換することができます。

SELECT STR_TO_DATE(CONCAT(YEAR(CURDATE())-1,'-12-31'), '%Y-%m-%d'); 
+-------------------------------------------------------------+ 
| STR_TO_DATE(CONCAT(YEAR(CURDATE())-1,'-12-31'), '%Y-%m-%d') | 
+-------------------------------------------------------------+ 
| 2016-12-31             | 
+-------------------------------------------------------------+ 
関連する問題