私は日付があり、同じ年の現在と前の月に日付を数える必要があります。mysqlの指定日に月の賢明な日数を計算するには
は私が必要なもの23 - 4月 - 2017年のように
を日付があるとします。
Jan-2017 - 31
Feb-2017 - 28
March-2017 - 31
April-2017 - 30
私はこれらのカウントを取得するクエリを作成することはできませんよ。
私は日付があり、同じ年の現在と前の月に日付を数える必要があります。mysqlの指定日に月の賢明な日数を計算するには
は私が必要なもの23 - 4月 - 2017年のように
を日付があるとします。
Jan-2017 - 31
Feb-2017 - 28
March-2017 - 31
April-2017 - 30
私はこれらのカウントを取得するクエリを作成することはできませんよ。
このコードは、単に必要な日付に変数@dを設定し、あなたがやりたいこと:選択した日付までのすべての月の
set @d=date("2017-02-17");
set @d1=date(concat(year(@d),"-",month(@d),"-01"));
set @d2=ADDDATE(@d1,32);
set @d2=date(concat(year(@d2),"-",month(@d2),"-01"));
select if(month(@d1)=12,31,dayofyear(@d2) - dayofyear(@d1));
編集されたバージョン:
まず、私はのためのテーブルを必要としますヶ月:この文では
create table months(id INT);
insert into months (id) values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12);
と正しい日付は、私が希望先月の日付を取得し、挿入:
set @d=date("2017-07-17");
select
concat(
DATE_FORMAT(date(concat(year(@d),'-',id,'-1')),'%M - %Y - '),
dayofmonth(last_day(date(concat(year(@d),"-",id,"-01")))))
from
months where id between 1 and month(@d);
これは実現:
January - 2017 - 31
February - 2017 - 28
March - 2017 - 31
April - 2017 - 30
May - 2017 - 31
June - 2017 - 30
July - 2017 - 31
これは現在の月の日だけを返します.. – MonsterJava
あなたは正しいです、選択した日付まですべての月に新しいバージョンを追加しました。 – Sascha
あなたの期待出力が矛盾しています。そこに一年かかりますか? – Matt
問題ありません。しかし、日の計算は、ユーザーが経過した年に基づいて行う必要があります。とにかく質問を更新しました。ありがとう。 – MonsterJava
http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sql-クエリ – Strawberry