日付が d/m/y の形式になっています。それらをDATETIME列に挿入するにはどうすればよいですか?
6 に答える
日付を任意の形式に変換するdate()
には、php の関数を使用する必要があります。strtotime()
MySQL データベースYY-MM-DD
は datetime データ型の形式で日付を格納するため、たとえば日付がある場合
$date = '26/05/2012';
date()とstrtotime( )を使用して変換できます
$formatDate = date('Y-m-d', strtotime('26/05/2012'));
これにより、データベースに挿入できる日付が変換26/05/2012
されます。2012-05-26
タイムスタンプ データ型を使用してデータベースに日付を格納している場合は、現在の日付を UNIX タイムスタンプに変換し、たとえばデータベースに格納するだけです。
$date = strtotime('26/05/2012');
//this will convert the date to unix timestamp
アップデート:
@wallyk (ありがとう) が指摘したように、 strtotime() はdd/mm/yy
フォーマットを処理しません。/
修正は、コードの下のスラッシュをmに置き換える-
ことです。
date('Y-m-d', strtotime(str_replace('/', '-', '26/05/2012')));
MySQL のSTR_TO_DATE()
関数を使用します。
INSERT INTO my_table VALUES (STR_TO_DATE('26/5/12', '%e/%c/%y'))
これを試して:
$mysqldate = date("m/d/y g:i A", $datetime);
$date = date('d/m/Y');
$date = strtotime($date); //UNIXタイムスタンプ形式
基本的にアメリカの日付形式でMM/DD/YYYY
あり、提供しDD/MM/YYYY
ているためstartotime()
、この入力でnull値が返されます。(MM/DD/YYYY)
前述の日付形式を使用している場合、さまざまな場所でさらに多くの問題が発生するため、アメリカの標準的な日付形式に従う必要があると思います..
これで確認すると
echo date('Y-m-d', strtotime('05/26/2012') );
そしてそれは正常に動作しています..
DATE列を文字列列に変更し、いつでもデータを挿入できます。日付が正しいかどうかを確認するには、正規表現を使用できます。