はじめに
気づいたら簡単なことだったのですが、さらっと流していたら、中々、曲者だったことです。
どんなことだったか
MYSQLで、日付フィールドを作成して、そこへDate.now()メソッドを使用して、ミリ秒単位のデータを保存しようとしました。
そしたら、中々、データが保存できなかったのです。
フィールドの構造は、dateフィールドとして、タイプはDateとしていました。
もしかしたら、このDateタイプかと思い、DateTimeに変えてみました。
しかし、それでも保存できません。これで、大分時間をつぶしました。
ちなみに、以前、日付のデータを保存していたphpファイルを探して、そのコードとテーブルの構造をよく見てみました。
すると、dateフィールドのタイプがbigint(20)で定義していました。
そうか、これかと納得しました。
念のため、Date.now()メソッドの仕様を確かめてみました。
すると、このメソッドは、1970年-01月-01日-0時:0分:0秒からのミリ秒を表しているとありました。例題でこの数値を見てみると、13桁の数値でした。相当大きい数値です。
そのために、bigint(20)としていたのかと思いだしました。
時間が経つと忘れているものです。
修正してみたら
それで、さっそく、テーブルのタイプをbigint(20)にしました。
これで、動作テストをしてみたところ、見事、日付を保存できました。
あとがき
気が付けば簡単なことですが、さらっと流すと思わないことで時間をつぶすことになります。備忘録ではないですが、過去に作成したコードを見返すことは、役に立つことが多いです。
これからも、うっかりミスはなくならないと思いますので、問題が起こった時の神頼みとして、過去のコードは見返すようにしたいと思います。