データベースに保存する日付形式をd-m-y
からy-d-m
に並べ替える機能を書いた。元の日付を持つ生の文字列は、挿入クエリで正しく格納されますが、書式付きの文字列は正しく格納されません。DATE予期しない動作を挿入します。どうして?
表構造:
+-------+------+
| Field | Type |
+-------+------+
| id | INT()|
+-------+------+
| date1 | DATE |
+-------+------+
| date2 | DATE |
+-------+------+
PHP:
<?php
$db = new mysqli("localhost","root","","test");
function date2Store($date) {
$dateFormat = DateTime::createFromFormat('d-m-y',$date);
return $dateFormat->format('y-d-m');
}
$dateRaw = "22-01-17";
$dateFormatted = date2Store($dateRaw);
echo $dateFormatted; // Checking how the string looks
$query = "INSERT INTO dateTest(date1,date2) VALUES ('$dateFormatted','$dateRaw')";
echo $query; // Checking how the query looks
$db->query($query);
?>
これの結果は次のとおりです。
+----+------------+------------+
| id | date1 | date2 |
+----+------------+------------+
| 1 | 0000-00-00 | 2022-01-17 |
+----+------------+------------+
$クエリ版画:
INSERT INTO dateTest(date1,date2) VALUES ('17-22-01','22-01-17')
両方が文字列であることを確認しましたが、クエリが正しいように見えます。なぜ彼らは異なったものを保管していますか?
[OK]を、私の愚かな、私は間違った方向に間違いを探していました。私は 'y-m-d'のときに' y-d-m'をフォーマットしていました。私を指してくれてありがとう。 – MarioZ