現在の日付を日時形式mySQLで挿入する


96

データベースに日付を正しく挿入するのに問題があります。

$date = date('m/d/Y h:i:s', time());

私はこのフォーマットを使用していますが、正しくエコー出力されますが、挿入すると

mysql_query("INSERT INTO table 
(dateposted) 
VALUES ('$date')");

それはうまく機能していないようで、時間は00:00:00のままです。素晴らしい解決策が見つかれば感謝します。


2
Datepostedは日時形式です。
CCates

回答:


221

現在の時刻を保存したい場合は、MYSQLの関数を使用してください。

mysql_query("INSERT INTO `table` (`dateposted`) VALUES (now())");

PHPを使用する必要がある場合は、フォーマットするY-m-d H:i:sため、

$date = date('Y-m-d H:i:s');
mysql_query("INSERT INTO `table` (`dateposted`) VALUES ('$date')");

21
ただし、MySQLサーバーのロケール/タイムゾーンを使用します。UのApache / PHPとMySQLが異なるサーバー上にあり、そのうちの1つでタイムゾーンが正しく設定されていない場合、Uの値は異なります。
Jeff_Alieffson 2013年

3
@Jeff_Alieffsonは正しいです。代わりにUTC_TIMESTAMP()dev.mysql.com/doc/refman/5.5/en/…)を使用することをお勧めしますNOW()
Ejaz

同じことを試しましたが、0000-00-00 00:00:00を取得しており、データ型はdatetimeです。これで何か助け?
user9437856



6

NOW()MySQLテーブルに現在の日付と時刻を挿入するために使用されます。データ型を持つすべてのフィールドはDATETIME, DATE, TIME & TIMESTAMP、この関数でうまく機能します。

YYYY-MM-DD HH:mm:SS

デモンストレーション:

次のコードは、 NOW()

INSERT INTO auto_ins
(MySQL_Function, DateTime, Date, Time, Year, TimeStamp)
VALUES
(“NOW()”, NOW(), NOW(), NOW(), NOW(), NOW());

5

セットtypeという名前の列のdatepostedようにDATETIMEして次のクエリを実行します。

INSERT INTO table (`dateposted`) VALUES (CURRENT_TIMESTAMP)

1

" datetime "は、日付が次のような形式であることを期待します:YYYY-MM-DD HH:MM:SS

挿入するときに日付をそのようにフォーマットしてください。


だから私はdate( "YYYY / MM / DD HH:MM:SS"、time());?
CCates

番号?スラッシュ(/)ではなくダッシュ(-)を使用します。
JanHančič2012年

1
     <?php $date= date("Y-m-d");
$time=date("H:m");
$datetime=$date."T".$time;
mysql_query(INSERT INTO table (`dateposted`) VALUES ($datetime));
?>

<form action="form.php" method="get">
<input type="datetime-local" name="date" value="<?php echo $datetime; ?>">
<input type="submit" name="submit" value="submit">


1
Stack Overflowへようこそ!良い答えはコードを説明するだけでなく提供します。回答を更新して、このコードがどのように機能するか、なぜそれが最良の選択肢であるかについての説明を含めることを検討してください。
Ajean 2015

1

PHPから日付を渡す場合、STR_TO_DATE()mysql関数を使用して任意の形式を使用できます。あなたがhtmlフォームを介して日付を挿入していることを認めましょう

$Tdate = "'".$_POST["Tdate"]."'" ;    //   10/04/2016
$Tdate = "STR_TO_DATE(".$Tdate.", '%d/%m/%Y')"  ;  
mysql_query("INSERT INTO `table` (`dateposted`) VALUES ('$Tdate')");

datepostedmysqlのあるべきdate形。または、mysqlが00:00:00を追加
する場合もあります。DBに日付と時刻を一緒に挿入する方がよいので、時間と秒で計算できます。()。

$Tdate=date('Y/m/d H:i:s') ; // this to get current date as text .
$Tdate = "STR_TO_DATE(".$Tdate.", '%d/%m/%Y %H:%i:%s')"  ;  

1

それをより簡単かつ効率的にするための最良の方法はこれです:

CREATE TABLE table_name (
field1,
..
..
time_updated timestamp default current_timestamp
)

これで、テーブルに行を挿入するときに、このフィールド(time_updated)をスキップできます。デフォルト値として現在時刻が入力されるためです。


0

タイムゾーンで使用するだけです:

date_default_timezone_set('Asia/Kolkata');      
$date=date("Y/m/d h:i:sa");

0

$ date = date( 'Ymd H:i:s'); タイプ: 'datetime'は、日付とタイムスタンプ全体を印刷したいので、私にとっては非常にうまくいきました。

$ date = date( 'Ymd H:i:s'); $ stmtc-> bindParam(2、$ date);


-1

データベースのファイルタイプとともに、次のようにコードを少し変更する必要があると思います。

mysql_query("INSERT INTO table (`dateposted`) VALUES ($datetime)");

うまくいきますように。


-2

これを使って

$date = date('m/d/Y h:i:s', time());

そしてMYSQLでは

type=varchar

その後、日付と時刻が正常に挿入されます


最初の関数は質問で使用したものと同じです。そして、この回答の残りの部分は、5年前の質問を再開することを保証するものではありません。あなたのソリューションが5年前に投稿されたものより優れていると思う理由を説明してください。
Matthew Ciaramitaro 2017年

古い質問ではデータ型について説明していないため
vikas pandey

-5

これを試して

$('#datepicker2').datepicker('setDate', new Date('<?=$value->fecha_final?>')); 

これにより、jQueryの日付ピッカーが設定されます。問題は、MySQLデータベースへの挿入についてでした。
Teepeemm
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.