![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67b6d)
例えば、
商品コード(PRIMARY),売れた日
というカラムがあるDBのテーブルがあって、
これでどの商品がいつ売れたのかを管理しているとします。
このテーブルから、商品Aが先月何個売れたか、N月に何個売れたか、先週何個売れたか、ここ半年の週別売り上げ個数一覧・・・
のようなデータを取得するプログラムを組もうとしています。
しかし日付の計算の仕方がどうにもわからず困っています。
「今日の日付」という情報から、上記のような情報がSQLで取れるようにするための時間的条件を指定できる日付情報の算出の仕方を教えてください。
お願いいたします。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
MySQL的な先月の選択
SELECT * FROM テーブル
WHERE DATE_FORMAT(CURDATE(),'%Y-%m-01') - INTERVAL 1 MONTH AND DATE_FORMAT(CURDATE(),'%Y-%m-01') - INTERVAL 1 DAY
>過去1年間の月毎の売り上げ
これをやるなら、何年何月という情報をあらかじめフィールドで持っていない
とSQLとしてはきちんとしたチューニングはできません。
とりあえずGROUP BY (DATE_FORMAT(売れた日,'%y%m'))などで集計はできます
(たぶんインデックスがきかないですけど)
No.3
- 回答日時:
再度回答します。
PHPでも日付の計算ができます。
日付関連の計算についてキレイにまとめてある記事を発見しましたので、
参考URLに記載しておきますね。
参考URL:http://www.hoge256.net/2007/08/63.html
No.2
- 回答日時:
PHPで求めたいなら
echo "1日前は" . date("Y/m/d",strtotime("-1 day" ,strtotime("now"))) . "\n";
echo "1ヶ月前は " . date("Y/m/d",strtotime("-1 month" ,strtotime("now"))) . "\n";
echo "1年前は " . date("Y/m/d",strtotime("-1 year",strtotime("now"))) . "\n";
echo "1週間前は " . date("Y/m/d",strtotime("-1 week" ,strtotime("now"))) . "\n";
とかすれば取得できます。
MYSQLで求めたいなら date_addを使えばいいと思います。
http://www9.atwiki.jp/my-sql/pages/99.html
>あと、過去1年間の月毎の売り上げ個数などの場合
上記で日付を求めた後、YYYYMMの部分だけ切り出して、前方一致を条件にすればどうでしょう。
(SQLでは遅くなりそうですが)
No.1
- 回答日時:
言語、データベースの種類はさておき、
簡単な考え方を示します。
例えば『今日の日付』からは『年』『月』『日』『時刻』などが取得できます。
それを元にすれば、先月が何年の何月なのか、といった情報が取れます。
『売れた日』を日付型データで保持していると仮定すると、
本日 [2008/09/14] を基準にして昨日のデータが欲しい場合、
WHERE '2008/09/13 00:00:00' <= 売れた日
AND 売れた日 <= '2008/09/13 23:59:59'
といった感じでWHERE句を指定すれば、日付の範囲が取れますね。
以下のような書き方でも同じ意味になります。
WHERE 売れた日 BETWEEN '2008/09/13 00:00:00' AND '2008/09/13 23:59:59'
日付型データの扱い方についてはSQL関連のウェブサイト等を
参考にしていただくと理解が深まるかと思います。
この回答への補足
ありがとうございます。
PHPとMySQLを使っています。
例えば、今日の日付'2008/09/04'から、先月が何月だったか、などはどうやって取れるものなのでしょうか?
全部自動でできるようにしておきたいのです。
あと、過去1年間の月毎の売り上げ個数などの場合、一ヶ月の日数は一定ではないし、、計算の仕方がわかりません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・【大喜利】【投稿~8/27】 こんなガソリンスタンド二度と来るか!なぜそう思った?
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・【お題】動物のキャッチフレーズ
- ・【お題】甲子園での思い出の残し方
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・自分用のお土産
- ・人生で一番お金がなかったとき
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・ちょっと先の未来クイズ第1問
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
開始と終了を指定して、その間...
-
月曜日から始まる週間カレンダ...
-
C言語を使って、ある特定の日の...
-
ASP 年度年齢の計算
-
「取得先」という表現について
-
【C#】DataGridViewの最大列数...
-
DTOとEntityの差は何ですか。
-
URLのパラメータをGETのままで...
-
Yahoo! JAPAN IDを新規取得でき...
-
バッチファイルでpingの結果を...
-
wordの差し込み印刷で文字...
-
Dosブロンプトでtabを出力したい
-
VBA コレクションに2次元配列...
-
excel access連携 このテーブル...
-
Windowsのsetコマンドでの小数...
-
VBAでPDFファイルの文書のプロ...
-
【Java】投稿完了画面リロード...
-
shシェルスクリプト 空白行の...
-
WordでExcelデータを差込...
-
POSTで情報を他のサーバーに渡...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
開始と終了を指定して、その間...
-
ファイル名に日付の挿入
-
昨日の日付を取得するVBscript
-
アップロードしたファイル名に...
-
現在時刻をyyyymmddhhmmss形式...
-
昨日の日付名でファイルを作成...
-
C言語でシステム日付との差を...
-
プルダウンからの日付取得処理
-
C言語を使って、ある特定の日の...
-
md5について
-
strtotime 前月・前々月の表示
-
MYSQLの日付から現在までの年数...
-
PHPで以下のような占いプログラ...
-
日付を付けたファイルを作成したい
-
6ヶ月前の日付を取得するにはど...
-
ESXiのdateコマンドについて
-
日付時間をファイル名にしたい...
-
phpで○○○○年○月○日というデータ...
-
PHPでn日後を計算したい
-
MS-DOSコマンドのリダイ...
おすすめ情報