web-dev-qa-db-ja.com

PHPを使用してmysqlテーブルにタイムスタンプを保存する

MySQLテーブルにtimestampデータ型のフィールドがあります。そのテーブルにデータを保存しています。しかし、タイムスタンプ(1299762201428)をレコードに渡すと、値0000-00-00 00:00:00がそのテーブルに自動的に保存されます。

タイムスタンプをMySQLテーブルに保存するにはどうすればよいですか?

これが私のINSERTステートメントです。

INSERT INTO table_name (id,d_id,l_id,connection,s_time,upload_items_count,download_items_count,t_time,status)
VALUES (1,5,9,'2',1299762201428,5,10,20,'1'),
       (2,5,9,'2',1299762201428,5,10,20,'1')
88
gautamlakum

このように渡す

date('Y-m-d H:i:s','1299762201428')
150
jimy

おい、これにはFROM_UNIXTIME()関数を使用してください。

このような:

INSERT INTO table_name
(id,d_id,l_id,connection,s_time,upload_items_count,download_items_count,t_time,status)
VALUES
(1,5,9,'2',FROM_UNIXTIME(1299762201428),5,10,20,'1'), 
(2,5,9,'2',FROM_UNIXTIME(1299762201428),5,10,20,'1')
49
Richard Tuin
$created_date = date("Y-m-d H:i:s");
$sql = "INSERT INTO $tbl_name(created_date)VALUES('$created_date')";
$result = mysql_query($sql);
19

明確にするべきいくつかのこと:

  • MySQLタイムスタンプフィールドタイプは、UNIXタイムスタンプではなく、日時型の値を格納します。
  • UNIXタイムスタンプは、通常のint型の番号です。
  • あなたが話しているタイムスタンプは、通常のUNIXタイムスタンプではなく、ミリ秒のタイムスタンプです。

したがって、正しい答えは

$timestamp = '1299762201428';
$date = date('Y-m-d H:i:s', substr($timestamp, 0, -3));
15

データ型 'bigint unsigned'は、この要件に適合する場合があります。

3
RollingBoy

私はあなたが値を保存しようとしているフィールドが日時フィールドであると推測していますそうではありませんが、タイムスタンプについても同じことが当てはまるようです。その場合、mysqlは、形式が年-月-日時:分:秒であることを期待します。タイムスタンプを保存するには、次のようなクエリを使用してフィールドを数値に変換する必要があります

alter table <table_name> change <field> <field> bigint unsigned

現在の時刻を使用している場合は、now()またはcurrent_timestampを使用できます。

2
Belinda

FROM_UNIXTIME() を使用します。

注:1299762201428はミリ秒タイムスタンプ(JavaScriptのDate()* 1など)に似ているため、おそらく1000で割る必要があります。

1
Udo G

テーブルのフィールドタイプをチェックすると、bigintなどのようなデータタイプのタイムスタンプ値が保存されるだけです。

datetimeタイプではありません

1
user319198

これはそれを行う必要があります:

  $time = new DateTime; 
1
misaizdaleka

datetimeフィールドタイプを使用します。人間が読みやすい(タイムスタンプを読み取らない)や MySQL関数 などの多くの利点があります。

UNIXタイムスタンプから変換するには、MySQL関数FROM_UNIXTIME(1299762201428)を使用できます。元に戻すには、UNIX_TIMESTAMPSELECT UNIX_TIMESTAMP(t_time) FROM table_nameを使用できます。

もちろん、MySQL関数が気に入らない場合は、常にPHPを使用できます:'INSERT INTO table_name SET t_time = ' . date('Y-m-d H:i:s', $unix_timestamp)

0
Znarkus

データ型varchar(15)を使用することをお勧めします。

0
gautamlakum

$date = \gmdate(\DATE_ISO8601);を実行できます。

0
HelpNeeder

クエリでnow()も使用できます。

insert into table (time) values(now());

現在のタイムスタンプを使用します。

0
Masood Moshref

タイムスタンプが現在の時刻の場合、mysql NOW()関数を使用できます

0
ipsum