• ベストアンサー

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

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

  • PHP
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • mpx
  • ベストアンサー率71% (149/209)
回答No.1

> mysqlのフィールドにint(11)でunix timestampを挿入しています。 > その11桁の数字の羅列をunixのタイムスタンプ形式に変更したいのですがどのようにすればよいのでしょうか。 > うまく説明できないのですが、その11桁の数字はタイムスタンプとしてphp側で処理できないのでしょうか。 この文章は、以下の文と同じでしょうか?  PHPにてinteger型のunixtimestampを MySQLのフィールドにint(11)で書き込んだ。その書き込んだunixtimestampをMySQLから読み出した整数値をPHPでタイムスタンプとして扱えるのか → 扱えます。 >> mysqlの種別カラムにおいて、int(11)とtimestampは同一のデータとして処理できないのでしょうか。 →扱えません。 MySQLのtimestampは、表示幅は19文字に決められていてフォーマットは YYYY-MM-DD HH:MM:SS となります。よって表示幅11文字の整数int(11)とは形式が異なります。

gogo8999
質問者

お礼

どうもありがとうございました。 違いがとてもよく分かりました。

関連するQ&A

  • timestampの日付の表示変換

    Mysqlのデータベースの中にある フィールド名: date_time 種別: timestamp を下記のPHPコードですると、 echo $row['date_time']; 下記のように表示されます。 2008-02-04 00:00:00 これを、Monday, February 4, 2008 と表示させたいのですが、 どのように日付表示を変換すればよいのか分かりません。 どなたか教えてもらえますか? 宜しく御願いします。

    • 締切済み
    • PHP
  • [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のTimestamp型の使い方

    MySQLとPHPで製作しています。 registdateとlastaccessとういうカラムにtimestampを設定して 登録操作でINSERT文にregistdateとlastaccessの両方にNow()として登録。 更新操作でUPDATE文にlastaccessのみにNow()として更新したいのですが、更新作業の際に2つのカラムが更新されます。設定の方法を教えてください。

    • ベストアンサー
    • MySQL
  • DBに半角数字10桁入力すると別数字になります

    phpとphpmyadminを連携しており、フィールドはid(AUTO_INCREMENT)を含め、11項目作成しています。 phpでは9つのフォームがあり、入力された値が2~10つ目のフィールド(すべてint(10))に格納され、11こ目のフィールドはdateで取得した値が入ります。 php上で、生成されたsql文をechoで表示させると、入力したとおりになっているのですが、phpmuadminの中身を見てみると、10桁フルで入力した値が、決まって「2147483647」となっており、困っています。 変数もechoで細かく見てみましたが、どこもおかしなところはありません。 DBに格納された数字のみがおかしなことになっています。 さらに、いろいろ試してみたところ、 1234564757はそのまま 2222222222は2147483647 2222222229は2147483647 4545454545は2147483647 1111111112はそのまま 1111111111はそのまま 2222はそのまま(9桁までの数字の連続なら正常) のような感じで、1の場合は10桁でも変な数字にならず、ほかの数字が連続するときまって2147483647になるようです。 11桁からはプログラムによりエラーが出て再入力を求めるようにしており、11桁以上の場合は正常にエラーが出るので、おかしくなるのは、10桁のときのみです。 格納寸前の変数も直後の変数や$sqlもおかしなところは全くないので、何が狂わせているのかがわからずにいます。 php:5.3.8 mysql:5.5.16 phpmyadmin:3.4.5 Apache:2.2.21 (Win32) つたない説明で分かりづらいかもしれませんが、大変困っておりますので、 何かアドバイス等があれば是非ご教授いただければ幸いです。

    • ベストアンサー
    • MySQL
  • 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
  • MySQLのTimestamp(14)型のフィールドにYYYY/MM/DD hh:mm形式のデータをインサートするには

    MySQLのTimestamp(14)型のフィールドに YYYY/MM/DD hh:mm形式のデータをインサートするには どのようにしたらよいのでしょうか? MySQL の Timestamp(14)型(YYYY-MM-DD hh:mm:ss)のフィールドに YYYY/MM/DD hh:mm 形式のデータ(ssに該当するデータがない)を インサートするには、 PHPでどのようにしたらよいのでしょうか? できれば、インサートの際にssに自動的に00をつけたいです。 現在、PHPでinsert文を実行すると、データの桁数が足りないため、 フィールドの値は、0000-00-00 00:00:00になってしまいます。 同じ形式(YYYY/MM/DD hh:mm)のデータをphpMyAdminで インポートすると、自動的にssに00がつき、 YYYY-MM-DD hh:mm:ss(例 2009-10-20 12:10:00) となってくれます。 PHPでもphpMyAdminと同じ処理をしたいのですが、 インターネットで検索してもやり方が見つからず、 どのようにしたらよいのか、わかりません。。。 インサートするデータサイズが83MBと大きいので、 PHPで処理したいと思っています。 (phpMyAdminは8MBまでなので) ご存知の方がいましたら、教えていただけると、 助かります。m(_ _)m レンタルサーバー:さくら インサートするファイル:CSVファイル PHP 5.2.x MySQL 5.1 phpMyAdmin 3.1.3.1

    • ベストアンサー
    • MySQL
  • 時間差を求める

    PHPを使いDB(MySQL)に格納されている登録時間から、 そのデータを呼び出した時との時間差を求めようとしています。 表題の内容として今の考えでは、 格納されているTIMESTAMP型の登録時間をDBから読み込んだ後、 PHP側でそれをstrtotime()でUNIXタイム(※1)にし、 time()から※1を差し引き、その後date()等で整形・・・ と考えているのですが、どうも効率が悪いような気がします。 例えば、MySQLでクエリを送信する際に、NOW()関数などと組み合わせて、 そのまま時間差をデータとして変数に代入させて返すということはできるでしょうか? 投稿内容の時間として、ユーザのログイン情報として、ランキング登録時間として、 「○秒前」「○分前」「○時間前」「○日以上」といった表示を見かけますが、 そういうことをしたいと思っています。 簡略化できるのならば、MySQLのクエリ内の処理でもPHP側での処理でも構いません。 宜しくお願いします。 ----------------- 環境  PHP 5.2.5  MySQL 5.1.22

    • ベストアンサー
    • PHP
  • Mysqlのupdate文

    Mysql3.23.42+PHPで下記のようなテーブルで Field| Type ----+------------  a | int  b | varchar  c | varchar  d | timestamp  e | timestamp update文を実行すると、 例  update set b='あ',c='い',e=NULL where a='1'; dまでアッデートされてしまうのですが何ででしょう? 何か特別なことしなくてはいけないのでしょうか?

  • 連続数字を時間に変換する方法(桁区切り)

    300という連続した数字に“:”を挿入し3:00とすることで、時間と認識したい。Excelに機能はありますか? ※日付の場合は、20110101という連続した数字を「桁区切り」機能で“/”を挿入し2011/01/01とすることで日付と認識させることが可能だが、時間も同様に処理したい。

専門家に質問してみよう