フィールド名に日付を入れたい

このQ&Aのポイント
  • MySQL&PHPを利用しております。下記のように書いたのですが、フィールド追加できません。
  • フィールド名として日付を指定する方法はないのでしょうか?CRONで毎日、日付のフィールドを追加して、データの変化を見ていきたいと考えています。
  • わかる方お願いします。
回答を見る
  • ベストアンサー

フィールド名に日付を入れたい

いつも回答ありがとうございます。 MySQL&PHPを利用しております。 下記のように書いたのですが、フィールド追加できません。 $today = date("ymd"); $sql = "ALTER TABLE book1 ADD $today TEXT NOT NULL"; $query = mysql_query($sql, $link); $todayの所を、 $today = "d" . date("ymd"); のように文字を先頭に置くなどするとフィールドを追加できました。 日付はフィールド名として指定できないのでしょうか? CRONで毎日、日付のフィールドを追加して、データの変化を見ていきたいと考えています。 わかる方お願いします。

  • macus
  • お礼率76% (331/433)
  • MySQL
  • 回答数2
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • yamada_g
  • ベストアンサー率68% (258/374)
回答No.1

`で囲めばよさそうですよ。 ただ、マニュアルによると以前のバージョンでは >ただし、数字だけで構成される名前は使用できない。 だそうです。 http://dev.mysql.com/doc/refman/4.1/ja/legal-names.html

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

縦×横の正方行列を作りたいという趣旨でしょうか? SQLとしては最悪のデータの持ち方です。 正規化について理解を深めた方がよさそうです。 実際には日付とidの組合せで1レコードずつ追加して、 表示の際に縦×横となるように処理することになります

関連するQ&A

  • SQLでフィールドの順番を変更したい

    お世話になっております。 ORACLEを使用しております。 既存のテーブルに新しいフィールドをSQL文にて ALTER TABLE TEST_MST ADD TEST_CD VARCHAR2(2); と言う風に、SQL*PLUSにて追加いたしました。 これを参照しますと、 追加したフィールドがテーブルの一番最後のフィールドに 追加されているのですが、 フィールドの順番を変更したいと考えております。 SQL文にて何か方法はございませんでしょうか。 ご返答を宜しくお願い致します。

  • MySQLからフィールド名のリストを取り出し、一部のフィールド名を除外したい場合

    PHP + MySQLにて テーブルからフィールド名だけを取得し、さらに一部のフィールド名を除外したいです。 レコードじゃないのでis not構文は使えませんでした。 何かいい方法があれば教えてください。 $sql = "select * from table"; //tableテーブルからフィールド名を取り出し $rs = mysql_query($sql); $fields = mysql_num_fields($rs); $column = array(); for ( $i=0; $i<$fields; $i++ ) { $column[$i] = mysql_field_name($rs, $i); }

    • ベストアンサー
    • MySQL
  • 位置を指定してフィールドを追加する

    位置を指定して、フィールドを追加する方法をがわかりません。 ALTER TABLE [既存のテーブル名] ADD [新しいフィールド名] VARCHAR(100) AFTER [既存のフィールド名]; 上記のような方法でできませんでした。 ちなみにSQLServer2000がインストールされた環境で、クエリアナライザで実行しました。 よろしくお願いいたします。

  • フィールド数について

    いつもお世話になっております。 MySQL(4.0)を触り始めて1ヶ月少々の者ですが、本や皆様のご意見をもとに学ばせて頂いております。 と、ここでフィールド数に関して質問なのですが、コマンドプロンプトから「create table test(id int...)」と記述していくと、ある一定のところでこれ以上記述できなくなってしまう事があります。 現在、多いもので40弱程のフィールドを持ったテーブルを設置しておりますが、いつもフィールドの追加として、「alter table test add...」と対処している次第です。 これって何処か障害があるのでしょうか? フィールドの追加で事なきを得ているのですが、どうも不可解なもので・・・ご指導のほど宜しくお願い致します。

    • ベストアンサー
    • MySQL
  • 変数を組み入れたい

    MySQLのデータベースのテーブルに毎日1つのカラム(当日の名前のカラム)下記のようなPHPを作りました。 このPHPをクーロンで1日に1回踏むことにより、データベースの日付カラムを追記していくことを考えています。 下記のPHPだと、 ALTER TABLE `www_dairy` ADD `12-1` INT NOT NULL DEFAULT 0; という形で「12月1日」の固定値が追記されることになっています。 この固定値を「当日の変数としたい」というのが希望です。 print date("n-j"); で当日の日にちの変数は取得出来ます。 $today = date("n-j"); として変数を設定したまでは良いのですが、これを ALTER TABLE `www_dairy` ADD `12-1` INT NOT NULL DEFAULT 0; の12月1日の欄に変数として与える方法がわかりません。 ご教授いただきたくお願いいたします。 <?php $link = mysql_connect('localhost', 'root', 'password'); if (!$link) { die('接続失敗です。'.mysql_error()); } print('<p>接続に成功しました。</p>'); print date("n-j"); $db_selected = mysql_select_db('db_name', $link); if (!$db_selected){ die('データベース選択失敗です。'.mysql_error()); } print('<p>データベースを選択しました。</p>'); mysql_set_charset('utf8'); $today = date("n-j"); print('<p>データを追加します。</p>'); $sql = " ALTER TABLE `www_dairy` ADD `12-1` INT NOT NULL DEFAULT 0; "; $result_flag = mysql_query($sql); if (!$result_flag) { die('ADDクエリーが失敗しました1。'.mysql_error()); } $close_flag = mysql_close($link); if ($close_flag){ print('<p>切断に成功しました。</p>'); } ?>

    • ベストアンサー
    • PHP
  • 日付 yymmdd

    今日の日付をたとえば2007年12月13日のときは071213と表記させたいと思い、 $today = mktime (0,0,0,date("m") ,date("d")+1,date("Y")); $TODAY = date("ymd",today); としたのですが上手くいきません。 出力は700101となってしまいます。 どうすればよいでしょうか?

    • ベストアンサー
    • PHP
  • 月に対応するフィールドを抽出するSQL

    検索がまずいのか、過去ログに見当たりませんでした。 よろしくお願いします。 以下を実行して、テーブルを作成したとします。 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」です。

  • テーブルのフィールドにNot null制約を付けたい

    お世話になります。 既存テーブルにフィールドを追加する方法は わかっているのですが、その追加したフィールドに not null制約を付けるにはどのようなコマンドを 実行する必要があるのでしょうか。 ↓のコマンドには制約をつけるオプションはないですよね。。 ALTER TABLE テーブル名 ADD (カラム名 カラム定義) よろしくお願いします。

  • MYSQLのフィールドにユニークキーを設定する。

    すでに作ってしまったテーブルにユニークキーを付けたいと考えています。最悪の場合、新しくカラムを作っての追加でもかまわないのですが、いろいろ試してもエラーが返されてしまいます。 codeというカラムにユニークキーを設定したいのですが、 alter table テーブル名 modify unique code; alter table テーブル名 add unique code2; alter table テーブル名 modify code unique; alter table テーブル名 add code2 unique; alter table テーブル名 modify code test unique; alter table テーブル名 add code2 test unique; alter table テーブル名 modify unique code test; alter table テーブル名 add unique code2 test; alter table テーブル名 modify (code unique); alter table テーブル名 add (code2 unique); alter table テーブル名 modify (code text unique); alter table テーブル名 add (code2 text unique); など、思いつく限り試し、グーグルで調べる限り調べたのですが、出てきたものをためしてもダメでした。 テーブルを作成した後、カラムにユニークキーを設定した経験のある方、どのように変更をしたのでしょうか?

    • ベストアンサー
    • MySQL
  • ACCESS2007でフィールドの結合-空欄フィールドと日付フィールド

    ACCESS2007でフィールドの結合-空欄フィールドと日付フィールド またお世話になります。 一つのテーブル内の複数フィールドを結合して別フィールドを作りました。固定長で桁を全て揃えたデータが必要です。 table F1(text 3)|F2(text 3)|F3(text 10)|F4(date) 001 | 006 | harumaki | 31.3.2010 002 | 001 | (空白) | 1.4.2010 003 | 007 | (空白) | (空白) クエリ select F1 & F2 & F3 & space (10-len(F3)) & F4 as ketsugo from table; 結果 ketsugo 001006harumaki 31.3.2010 エラー エラー 問題1 空白フィールド 1つめのように全フィールドデータが入っていれば問題はないのですが、空白フィールドが入っている所でエラーが出てしまうようです。 F2を空白にして他を全て埋めた場合は、F2には固定長にするspaceが入っていないので詰まってしまうだけです。F3は10桁になるようデータの後ろにスペースが入ります。 クエリに問題があるのでしょうか。それともフィールドの定義でしょうか。 問題2 日付フィールド 日付を31.3.2010ではなく、31032010と直して変換したいです。 日付型ではなく、text 8にして、31032010とか01042010のように入力するしかないのでしょうか。 よろしくお願いいたします。