2016-09-29 8 views
0

私はテーブルを持っていて、theDateフィールドはINT(32)として構造化されています。mySQL整数フィールド(INT)にPHPを使ってUNIXのタイムスタンプを挿入するのに最適な方法は?

PHPスクリプトの作成mySQL PDOを使用して、日付のINTテーブルフィールドにUNIXのタイムスタンプを整数として挿入したいと考えています。これを行う最善の方法は何ですか?私のtheDateフィールドにとって最も効率的なサイズは何ですか? 8,16,32?

コード:

$theDate = now(); // this returns a 0 in theDate mySQL field 
    $stmt = $db->prepare("INSERT INTO countries(name, capital, language, theDate) VALUES (:country, :capital, :language, :theDate)"); 

$stmt->bindParam(':country', $country, PDO::PARAM_STR, 100); 
$stmt->bindParam(':capital', $capital, PDO::PARAM_STR, 100); 
$stmt->bindParam(':language', $language, PDO::PARAM_STR, 100); 
$stmt->bindParam(':theDate', $theDate); 
if($stmt->execute()) { 
    echo '1 row has been inserted'; 
} 

私はこれをGoogleで検索してこのサイトを検索しました。..良い答えを見つけることができません

おかげ

+1

はいけない - 代わりに適切な 'datetime'フィールドを使用します。あなたは日付で何かを取得したいときにはもっと楽になりますが、この場合、 'timestamp'フィールドが必要なように見えます。レコードが最後に更新された時刻を記録することを除いて、* country *テーブル。 – CD001

+0

ここには@ CD001があります。最も効率的なサイズは 'DATETIME'フィールドで、ネイティブフォーマットを使用すると、たくさんの[追加機能](http://dev.mysql.com/doc/refman/5.7/en/date-and-time -functions.html)を作成し、人間が読めるようにします。タイムゾーンの問題を避けるために**これらの時刻をUTC **として挿入してください。これらの値が関連している場合は、これらの値を表示するときにPHPでタイムゾーン変換を行うことができます。 – tadman

答えて

2

の日時情報を格納するための最高方法mysqlはdatetimeフィールドを使用します。そのために、あなたが試していた非常に今の()関数を使用することができます。しかし、もちろん、あなたがいないPHP、SQLでそれを呼び出す必要があります:

$sql = "INSERT INTO countries(name, capital, language, theDate) VALUES (?, ?, ?, now())"; 
$stmt = $db->prepare($sql); 
$stmt->execute([$country,$capital,$language]); 

あなたが信頼できないと時代遅れのUNIX_TIMESTAMPを使用して主張すれば、あなたは今unix_timestamp() SQL関数の代わりを使用する必要があります()。コードは上記と同じで、関数名のために保存されます。

あなたはPDO経由でデータベースにint型の値を送信したい場合は - をちょうどそれを送信します。

$theDate = time(); 
$sql = "INSERT INTO countries(name, capital, language, theDate) VALUES (?, ?, ?, ?)"; 
$stmt = $db->prepare($sql); 
$stmt->execute([$country,$capital,$language,$theDate]); 
関連する問題