MySQL VIEW連結時の設定

このQ&Aのポイント
  • MySQLでVIEW連結時の設定について説明します。
  • table1とtable2をキーで連結する際に、table2.dateのphpのtimestampを通常の日付形式に変換する方法を探しています。
  • アドバイスをお願いします。
回答を見る
  • ベストアンサー

MySQL VIEW連結時の設定

テーブル名 : table1 カラム1 : id(int) カラム2 : table2_id(int) テーブル名 : table2 カラム1 : id(int) カラム2 : time(int) ← phptaimestamp この二つをviewとして連結したいです。 table1.table2_id と table2.id をキーにするとして、問題はtable2.dateの中身がphpのtimestampで格納されている事です。 VIEW上で連結した際に、このtable2.dateのphpで吐いたtaimestampを通常の20131015の様な変換を加えたいのですが、MySQLの中で完結する方法はあるのでしょうか? 長文で申し訳ありませんが、アドバイス宜しくお願いします。

  • MySQL
  • 回答数1
  • ありがとう数12

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

  • ベストアンサー
  • mpro-gram
  • ベストアンサー率74% (170/228)
回答No.1

cast( FROM_UNIXTIME(unix_timestamp) as int ) unix_timestamp のところに、utc秒数が入ってるカラム名をいれてやれば、 YYYYMMDDhhmmss の数値で出力される。castしないで出力すると、通常 'YYYY-MM-DD hh:mm:ss' の文字列。 適宜フォーマットの指定もできるので、マニュアル参照してください。 http://dev.mysql.com/doc/refman/5.1/ja/date-and-time-functions.html#function_from-unixtime

sosuno20
質問者

お礼

遅くなって申し訳ありません。 迅速な対応ありがとうございます。 大変参考になりました。

関連するQ&A

  • [MYSQL]TIMESTAMPをWHERE句に指定しUPDATEする方法

    以下のようにテーブルを作成し、TIMESTAMP型のカラムをキーにUPDATEをしたいと考えています。 create table test(time timestamp, amount int); insert into test values('2008-01-07 19:15:12',0); update test set amount = -1 where time = '2008-01-07 19:15:12'; ところがMYSQLではUPDATE後、TIMESTAMPのカラムが2008年から2009年に変化します。ORACLEで試しましたが、TIMESTAMP型のカラムは変わりませんでした。 +---------------------+--------+ | time | amount | +---------------------+--------+ | 2009-06-30 10:04:53 | -1 | +---------------------+--------+ MYSQLの独自の仕様があるのでしょうか? MYSQL 5.1.35(mysql-essential-5.1.35-win32.msi) Windows 2003 Server Standard Edition R2 MYISAM

    • ベストアンサー
    • MySQL
  • MySQL TIMESTAMP型は、UTCですか?

    MySQL5で、 TIMESTAMP型のカラムに格納されるのは、UTCでしょうか。 それともローカルタイムゾーンなのでしょうか? あるいは、設定による、のでしょうか? >TIMESTAMP カラムの値は、ストレージでは現在のタイム ゾーンから UTC へ、読み出しでは UTC からカレントのタイム ゾーンに変換します。 http://dev.mysql.com/doc/refman/5.1/ja/time-zone-support.html と書いてあったのを見て、TIMESTAMP型のカラムに格納されるのは、UTC(日本時間-9)だ、と思ったのですが、 実際にカラムの中を確認してみると、その時点の日本時間が格納されています。 >TIMESTAMP 値は、現在のタイムゾーンから変換されて格納され、また検索された時に現在のタイムゾーンに再変換されながら、UTCに格納されます。 http://dev.mysql.com/doc/refman/5.1/ja/timestamp-4-1.html こちらでも、「UTCに格納されます」って書かれているのですが、 これは、「現在のタイムゾーンをそれぞれの接続ごとに設定した場合」に限っての話なのでしょうか? それとも、ストレージでは、って書かれているので、 ストレージのことが絡んでいるのでしょうか?(ストレージって何のことですか)

    • ベストアンサー
    • MySQL
  • Mysql DATE型のDEFAULT値

    初心者ですが、よろしくお願いします。 Mysqlでテーブルを作成して、カラムにDATE型を指定するとDEFAULT値が設定できません、、、。 これはMysqlの仕様なのでしょうか? ちなみに、TIMESTAMP型だと、'DEFAULT CURRENT_TIMESTAMP'でDEFAULT設定できます、、。 -- クエリ CREATE TABLE test ( column_name DATE NOT NULL DEFAULT CURRENT_DATE ); >> エラー ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CURRENT_DATE)' at line 1 Mysql::ABも調べたのですが、よく分かりませんでした。 よろしくお願いします。 MySQLバージョン 5.0.41

  • intの数字をtimestampに変換したい

    php5,mysql5.1の環境です。 mysqlのフィールドにint(11)でunix timestampを挿入しています。 その11桁の数字の羅列をunixのタイムスタンプ形式に変更したいのですがどのようにすればよいのでしょうか。 うまく説明できないのですが、その11桁の数字はタイムスタンプとしてphp側で処理できないのでしょうか。 mysqlの種別カラムにおいて、int(11)とtimestampは同一のデータとして処理できないのでしょうか。

    • ベストアンサー
    • PHP
  • 【PHP,MySQL】連番の付け方について

    連番を下記の様に付けたいのですが、どなたかご教授ください。 参考になるURLでも結構です。 【環境】 ・MySQL バージョン: 5.1.41 ・PHP バージョン: 5.3.1 【現状】 ○親テーブル:nou_itiran ・entry_id [int(11)][auto_increment]主 ・その他カラム ○子テーブル:nou_ko ・ko_id [int(11)][auto_increment]主 ・entry_id [int(11)]←親テーブルの主キー値が入る ・その他カラム 2つのテーブルを作成しています。 親テーブルのカラム[entry_id]に対して、子テーブルの[ko_id]に 副番号をつけたいのですが、考え方がまとまりません。 現在は、 [親entry_id]/[子ko_id] 456/1 456/2 457/3 457/4 458/5 458/6 459/7 ・ ・ のように、[親entry_id]と[子ko_id]は個々に連番が発生します。 *********** 【達成したい内容】 456/1 456/2----★ 457/1 457/2----★ 458/1 458/2 459/3----★ [親entry_id]に対して、何番まで使われたか(★)を他のテーブルで 保持しておけばよいのかも??と思うのですが、 具体的な手法がわかりません。 ************* MySQLへのセレクト、インサートはPHPから行っております。 宜しくお願いいたします。

    • ベストアンサー
    • MySQL
  • PHPでMySQLに格納したファイルをダウンロードしたいです。

    MySQLサーバに格納したファイルをPHPを使ってブラウザからファイルをダウンロードするプログラムを作りたいのですが、やり方が分からず困っています。方法もしくは簡単なスクリプトを教えてください。お願いします。 PHPを使ってブラウザからMySQLに画像やファイルをアップロードできたのですが、取り出す方法が分かりません。バイナリデータを取り出してimage srcを用い、ブラウザに画像を表示するまではできました。 テーブルは create table image( ID int not null primary key auto_increment, data MEDIUMBLOB); で作成しています。 ご教授お願いします。

    • ベストアンサー
    • PHP
  • MySQLのSELECT文の書き方

    MySQLで以下のようなテーブルがあります 【テーブル名】table_title id │ title ───── 1 │ あ 2 │ い 3 │ う 4 │ え 5 │ お 【テーブル名】table_data id │ data ───── 1 │ a 2 │ i 3 │ u 4 │ e 5 │ o 【テーブル名】table_cat id │ cat ───── 1 │ 1 1 │ 2 1 │ 3 2 │ 1 2 │ 3 3 │ 2 3 │ 5 4 │ 2 4 │ 3 5 │ 1 5 │ 2 5 │ 3 ここからPHPで以下のような配列にしたいのですが、可能でしょうか? Array ( [0] => Array ( [id] => 1 [title] => あ [cat] => Array ( [0] => 1 [0] => 2 [0] => 3 ) ) [1] => Array ( [id] => 2 [title] => い [cat] => Array ( [0] => 1 [0] => 3 ) ) [2] => Array ( [id] => 3 [title] => う [cat] => Array ( [0] => 2 [0] => 5 ) ) [3] => Array ( [id] => 4 [title] => え [cat] => Array ( [0] => 2 [0] => 3 ) ) [4] => Array ( [id] => 5 [title] => お [cat] => Array ( [0] => 1 [0] => 2 [0] => 3 ) ) )

    • ベストアンサー
    • MySQL
  • 複数のテーブルから登録順にデータ取得

    複数のテーブルから登録順にデータ取得なんてことできるのでしょうか? table_A A_id int A_time timestamp A_title text table_B B_id int B_time timestamp B_title text とtable_A table_Bにデータが存在するときに AB関係なく A_titleもしくはB_title を登録順のA_timeもしくはB_time 順に10個とか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
  • MySQLのTimestamp型

    MySQLのinsert分で現在の年月日時間をテーブルに入れたいのですがどのように書いたら良いですか? 教えてください。TIMESTAMP型がうまく働きません。PHPで書いています。

    • ベストアンサー
    • MySQL