![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
検索がまずいのか、過去ログに見当たりませんでした。
よろしくお願いします。
以下を実行して、テーブルを作成したとします。
CREATE TABLE table_name (date1 date ,data varchar(20))
データを入力して、
date1 data
field1 2004-03-01 AAA
field2 2004-03-02 BBB
field3 2004-03-03 CCC
field4 2004-04-01 DDD
これから、3月に対応するフィールドだけを抽出する
クエリー文を教えてください。
SELECT * FROM table_name WHERE date1( 以下の文 )
実際のデータベースでは、月締め計算をしたいのです。
日付は、上記と同じ date 型です。
PHP+MySQLで動かしています。
POSTで実際に受け渡される値は、「2004-3」です。
No.1ベストアンサー
- 回答日時:
即興なので微妙に違っているかもしれませんが、
以下の感じでどうでしょうか?
list($Year, $Month) = explode("-", "2004-3");
$Start = date("Y-m-d", mktime(0,0,0,$Month,0,$Year);
# 月末を求める
$Month++;
if($Month > 12){
$Year++;
$Month = 1;
}
$End = date("Y-m-d", mktime(0,0,0,$Month,0,$Year);
$Query = "select * from table_name where ";
$Query .= "date1 => $Start and date1 =< $End";
mysql_query($Query, $DBHandle);
目から鱗です、的確なアドバイスありがとうございます。
(目的をきちんと示せなかったので若干記述は異なりますが)
大筋では、ご指摘の方法で完璧に動きます。ほんとにありがとうございました、助かりました。
$tmp_date1 = '2004-3';
list ($year , $month ) = explode ("-","$tmp_date1");
$start = date("Y-m-d", mktime(0,0,0,$month,1,$year));
$end = date("Y-m-d", mktime(0,0,0,$month+1,1,$year));
$sql = "SELECT * FROM file_name
WHERE date >= '$start' AND date < '$end' " ;
mysql_query.....
No.5
- 回答日時:
#3です。
whereの条件に。
$tmp_date1 = '2004-3';
list ($year , $month ) = explode ("-","$tmp_date1");
$sql = "select * from file_name where year(date)=$year and month(date)=$month";
この回答への補足
ポイントに関して:
上位の方を評価するのは気が引けますが、ポイント配給が規則になっていますので仕方がありません。
(また今回の解は甲乙つけがたいと思います。)
初心者に対してのアドバイスとしては#1
コーディングの効率という点では#4
美しさということでは、#5と思います。
で、GuruGuru22さんやVargasさんの回答はとてもすばらしいものでしたが、はやくアドバイスをいただけた順で評価を
させていただきました。あしからず。
皆様、ありがとうございました。
再びありがとうございます。
初心者にとって、視覚的に非常に理解しやすい記述なので、感心しております。
今動かしているシステムに書き入れました。
うまく動いています。ありがとうございました。
No.4
- 回答日時:
#2です。
mysqlでやってみました。select * from table_name where date_format(date1,'%Y-%c') = '2004-3';
これでいいみたいですね。to_dateは無いみたいですね。
フォーマット文字列もPostgresとは違う様です。
もし、入力月が2桁ならば、'%Y-%m'とすればいいみたいですね。
他にも色々やり方はありそうですよ。下記URL参照。
参考URL:http://www.mysql.gr.jp/
とても簡潔な記述で感激です。
カラム名を変数のようにして式に組み込めることを知りませんでした、勉強になります。慣れたら、このような記述が問い合わせにふさわしい表現ですね。
No.3
- 回答日時:
MySQL のヴァージョンいくつか知りませんが
year と month って関数があります。
参考URL:http://www.mysql.gr.jp/jpdoc/3.23.x/manual.ja_Re …
アドバイスありがとうございます。
MySQLは4.0.13、PHPは4.3.2を使用しています。
初心なので、関数があることは知っていますが、
このような場合、どのように利用できるのかよくわかりません。
よろしくお願いします。
No.2
- 回答日時:
PHP+MySQL両方とも未経験ですが、Postgresならば、
select * from table_name where date1>=to_date('2004-3','YYYY-MM') and date1<to_date('2004-3','YYYY-MM')+interval '1 month';
で行けます。
回答ありがとうございます。
まさに、そのような感じで記述して問い合わせを
したいと思っています。
同じ書式で書き込みましたが、だめでした。
Postgresと同じ書き方では動かないようです。
これと同じ意味で、MySQLで動く命令は無いものでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL MYSQL エラー 2 2022/10/18 11:37
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- MySQL テーブル作成です。どこかのスペルが間違っているか記号など スペースかな? 1 2022/10/01 05:08
- MySQL `picture` varchar(255) のコマンドで間違いないでしょうか? 1 2022/11/21 04:08
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- MySQL テーブル作成時のカラムについて 2 2022/08/27 21:48
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- MySQL php テーブルを作れない 2 2022/11/17 18:22
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
joinの場合のテーブル名の別名...
-
今って秋田新幹線へ動いてますか?
-
【SQL】他テーブルに含まれる値...
-
SELECT INTOで一度に複数の変数...
-
フラグをたてるってどういうこ...
-
sqlに記述できない文字
-
JDBCを使ってdate型へのINSERT...
-
PostgreSQLのtimestamp型で時間...
-
SQLで、Join句で結合したテ...
-
予約システムでの時間の設計に...
-
1行のSQL文を改行するツール
-
1つのSQLで2段階の抽出を行い...
-
pandasでsqlite3にテーブル作成...
-
テーブル名が可変の場合のクエ...
-
timestampのデータはどのように...
-
T-SQLで任意の箇所で強制終了す...
-
ACCESS クエリーでソートの不具合
-
DB2のSQLコマンドについて
-
ORACLEのスキーマーを別のORACL...
-
insert処理でDATE型を追加したい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
joinの場合のテーブル名の別名...
-
2つの列からの最大値取得
-
複数行の結果を単一列に連結
-
SQLについて
-
SQLで2年連続で値が上昇した年...
-
SQL 複数条件を設定
-
CREATE VIEWについて
-
SQLのこと:distinctして並び替...
-
SQL 複数条件を設定
-
sql,union,これはエラーですか...
-
月に対応するフィールドを抽出...
-
PostgreSQL で自動採番する方法
-
SQL文の長さ制限について
-
order byで並び変えし最大値の...
-
SQLで期間をずらした集計処理
-
Postgresql Mecabでの解析について
-
Openldap関係でまた詰まってし...
-
【SQL】他テーブルに含まれる値...
-
SELECT INTOで一度に複数の変数...
-
フラグをたてるってどういうこ...
おすすめ情報