
MySQL5.0 について、
先期末の日付をYYYY-MM-DDの形で求めるSQLを作成したいと考えております。
【要件】実行時のシステム日付から先期末(上期/4~9月、下期/10~3月)の日付を返す
【例】
[実行日] [結果]
2008/06/10 → 2008/03/31
2008/12/24 → 2008/09/30
MySQLについては全くの無知であり、日付の関数から調べている始末です。
どなたか既に同様のSQLを実行経験のある方、実行SQLをご教示願います。
こうすれば出来るんじゃないか?という意見でも結構です。
宜しくお願い致します。
No.2ベストアンサー
- 回答日時:
今、テーブルdatesのカラムdがDATE型とします。
SELECT d, QUARTER(d), CASE
WHEN QUARTER(d) = 1 THEN CAST(CONCAT(YEAR(d) - 1, '-9-30') AS DATE)
WHEN QUARTER(d) IN (2,3) THEN CAST(CONCAT(YEAR(d), '-3-31') AS DATE)
WHEN QUARTER(d) = 4 THEN CAST(CONCAT(YEAR(d), '-9-30') AS DATE)
END endOfHalfPeriod
FROM dates;
これで、でると思います。
回答ありがとうございます。
QUARTER(d)!これです。こんな関数があればと思っていました。
確かにいただいたSQLでいけそうです。
ご回答、誠にありがとう御座いました。
No.1
- 回答日時:
1-3月、4-9月、10-12月を分けて考えればよいのでは?
たとえばこんな感じ?
SELECT @D:='2008/02/01' AS `日付`
,IF(MONTH(@D) BETWEEN 4 AND 9
,CONCAT(YEAR(@D),'/03/31')
,CONCAT(YEAR(@D)-(MONTH(@D)<4),'/09/30')
) AS `期末`;
SELECT @D:='2008/06/01' AS `日付`
,IF(MONTH(@D) BETWEEN 4 AND 9
,CONCAT(YEAR(@D),'/03/31')
,CONCAT(YEAR(@D)-(MONTH(@D)<4),'/09/30')
) AS `期末`;
SELECT @D:='2008/12/01' AS `日付`
,IF(MONTH(@D) BETWEEN 4 AND 9
,CONCAT(YEAR(@D),'/03/31')
,CONCAT(YEAR(@D)-(MONTH(@D)<4),'/09/30')
) AS `期末`;
回答ありがとうございます。
確かに1-3月、4-9月、10-12月の3パターン分けて考えるべきだと思います。もしも、ORACLEにないMySQLの関数で簡単に導けるのであればと思っていたのですが、やはり頂いた内容のロジックで考えるべきなのですね。
早々の回答ありがとう御座いました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
<SQL>重複しているデータの場合...
-
MySQLで日付(date)型のdefaul...
-
SQLローダーCSV取込で、囲み文...
-
単一グループのグループ関数で...
-
Oracleで「文字が無効です」の...
-
テーブルの最後(最新)のレコー...
-
where句中のtrim関数について
-
2つの列が同じ値の行を取得するSQL
-
引数によってwhere句を切り替え...
-
データ
-
AccessのSQL文で1件のみヒット...
-
updateで複数行更新したい
-
count関数の値をwhere句で使用...
-
並べ替えについて
-
SELECT FOR UPDATE で該当レコ...
-
【PL/SQL】FROM区に変数を使う方法
-
select文の実行結果に空白行を...
-
BLOBやCLOBのパフォーマンスを...
-
int型フィールドにnullを登録で...
-
SQL*Loader Append
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
<SQL>重複しているデータの場合...
-
複数のテーブルから値を合計出...
-
最新の日付と2番目の日付のデー...
-
【ExcelVBA】入力された日付か...
-
LIKE検索で範囲指定の方法
-
項目以外の文字列は連結できま...
-
日付
-
Mysqlについて、どの程度の処理...
-
SQLで、同じ値が何回連続す...
-
検索を繰り返す?
-
日付
-
mysqlでunixtimeによる日付範囲...
-
MySQLにおける条件/公開日を指...
-
PHPとMYSQLを使用したデータベ...
-
日付検索で0001-01-01 00:00:00...
-
windows7のmysqlで今日の日付か...
-
型変換
-
効率の良いSQL文の書き方を教え...
-
SQLです教えてくださいお願いし...
-
日付や日時を格納する場合の型...
おすすめ情報