クリスマスの日付:2021年12月25日(25 de Diciembredelaño2021)を文字列形式で受け取ったとします:「dmY」、たとえば「12-25-2021」。まずDateTime
、受け取った形式から有効なオブジェクトを作成します。
var_dump(DateTime::createFromFormat("d-m-Y","25-12-2021", new DateTimeZone("America/Argentina/Buenos_Aires")));
これは出力として生成されます:
object(DateTime)#2 (3) {
["date"]=>
string(26) "2021-12-25 10:21:11.000000"
["timezone_type"]=>
int(3)
["timezone"]=>
string(30) "America/Argentina/Buenos_Aires"
}
次に、 format( "Ymd H:i:s"))を使用してDateTimeオブジェクトから日付フィールドを取得する準備をします。
var_dump(DateTime::createFromFormat("d-m-Y","25-12-2021",new DateTimeZone("America/Argentina/Buenos_Aires"))->format("Y-m-d H:i:s"));
これにより、値を挿入する準備ができた出力が生成されます。
string(19) "2021-12-25 10:56:30"
要約すると、次のようにフォーマットされた日付('DD-MM-YYYY')をMySQLに挿入できます。
<?php
//string input post like "25-12-2021"
$date_input = $_POST['date_input'];
//create DateTime object
$date_time_obj=DateTime::createFromFormat("d-m-Y","25-12-2021",new DateTimeZone("America/Argentina/Buenos_Aires"));
//format date ready to insert as string at MySQL
$str_date=$date_time_obj->format("Y-m-d H:i:s");
?>
次に、PHPからMySQLにクエリとして直接実行します。
<?php
$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'world');
//verify connection
if (mysqli_connect_errno()) {
printf("Error de conexión: %s\n", mysqli_connect_error());
exit();
}
//prepare the query to execute
$stmt = $mysqli->prepare("INSERT INTO table_example (DATE_FIELD) VALUES (?)");
//prevent sql injection
$stmt->bind_param('s', $str_date);
//execute prepared statements
$stmt->execute ();
?>