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')
このように渡す
date('Y-m-d H:i:s','1299762201428')
おい、これには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')
$created_date = date("Y-m-d H:i:s");
$sql = "INSERT INTO $tbl_name(created_date)VALUES('$created_date')";
$result = mysql_query($sql);
明確にするべきいくつかのこと:
したがって、正しい答えは
$timestamp = '1299762201428';
$date = date('Y-m-d H:i:s', substr($timestamp, 0, -3));
データ型 'bigint unsigned'は、この要件に適合する場合があります。
私はあなたが値を保存しようとしているフィールドが日時フィールドであると推測していますそうではありませんが、タイムスタンプについても同じことが当てはまるようです。その場合、mysqlは、形式が年-月-日時:分:秒であることを期待します。タイムスタンプを保存するには、次のようなクエリを使用してフィールドを数値に変換する必要があります
alter table <table_name> change <field> <field> bigint unsigned
現在の時刻を使用している場合は、now()またはcurrent_timestampを使用できます。
FROM_UNIXTIME()
を使用します。
注:1299762201428はミリ秒タイムスタンプ(JavaScriptのDate()* 1など)に似ているため、おそらく1000で割る必要があります。
テーブルのフィールドタイプをチェックすると、bigint
などのようなデータタイプのタイムスタンプ値が保存されるだけです。
datetime
タイプではありません
これはそれを行う必要があります:
$time = new DateTime;
datetime
フィールドタイプを使用します。人間が読みやすい(タイムスタンプを読み取らない)や MySQL関数 などの多くの利点があります。
UNIXタイムスタンプから変換するには、MySQL関数FROM_UNIXTIME(1299762201428)
を使用できます。元に戻すには、UNIX_TIMESTAMP
:SELECT 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)
。
データ型varchar(15)
を使用することをお勧めします。
$date = \gmdate(\DATE_ISO8601);
を実行できます。
クエリでnow()
も使用できます。
insert into table (time) values(now());
現在のタイムスタンプを使用します。
タイムスタンプが現在の時刻の場合、mysql NOW()
関数を使用できます