エス技研

WordPress、CakePHP、PHP、baserCMSなどの Web系システムを中心に情報を提供します!


MySQL+CakePHPのdate型、datetime型項目は「2999-12-31」までしか扱えない

      2025/01/31

CakePHP4、CakePHP5の「date型」「datetime型」の最大値は「2999-12-31」

 
CakePHP4系、CakePHP5系の「date型」「datetime型」の最大値は「2999-12-31」までです。
ご注意ください。
 
 

MySQLの「date型」の最大値は「9999-12-31」で CakePHPとは異なる

 
MySQL 公式サイト 11.2.2 DATE、DATETIME、および TIMESTAMP 型
https://dev.mysql.com/doc/refman/8.0/ja/datetime.html
 
上記に、MySQLの「date型」「datetime型」のサポート範囲が書いてあります。
 「date型」は「1000-01-01」から「9999-12-31」
 「datetime型」は「1000-01-01 00:00:00」から「9999-12-31 23:59:59」
 
ちなみに「TIMESTAMP型」はサポート範囲が異なります。
 「TIMESTAMP型」は「1970-01-01 00:00:01(UTC)」から「2038-01-19 03:14:07(UTC)」
 
 
ですので、CakePHP4系、CakePHP5系でも同様に「date型」であれば「9999-12-31」までサポートされているのかと思っていましたが、「2999-12-31」まででした。
 
「3000-01-01」以降の日付を入力しようとするとエラーになりますのでご注意ください。
 
同じように「datetime型」も「2999-12-31 23:59:59」までのサポートになっており、「3000-01-01 00:00:00」以降はエラーとなります。
 
 

CakePHPでは date型は Validationで「2999-12-31」までとなっている

 
CakePHP4系、CakePHP5系で「date型」が「2999-12-31」までなのは、下記の Validationに「2999」まででチェックをする処理があるためです。
 
対象ファイル
vendor/cakephp/src/Validation/Validation.php
 
「function date」(495行目辺り?)に下記の記述があります。
(CakePHP5系の場合は 470行目辺りにあります。)
 

 
上記の記述は CakePHP3系、CakePHP4系、CakePHP5系のいずれにもありますので、CakePHP4だけではなく、CakePHP3、CakePHP5でも同様に「2999-12-31」までかと思います。
 
 
また、MySQLの「date型」の最大値は「9999-12-31」ですので、「date型」項目のバリデーションをオリジナルで「9999-12-31」まで対応できるように変更すれば CakePHPでも「9999-12-31」まで扱えるようになるでしょう。
 
 

CakePHP4の関連記事

CakePHP4系でJSONレスポンスの処理ではwithStringBodyを使う。3との違い解説
CakePHP4、CakePHP5の「warning: DebugKit is disabling...」の対処方法
MySQL+CakePHPのdate型、datetime型項目は「2999-12-31」までしか扱えない
CakePHP4のFrozenDateで1ヵ月前、先月、今月1日、来月末の日付などを算出する方法
CakePHP4のcake cache clear_allでPermission deniedはパーミッションの変更が必要
CakePHP4のクリエビルダーを使用してOR条件をAND条件でつなぐSQL文を作る方法
CakePHP4のController内でViewテンプレート、レイアウトの変更設定を記述する方法
CakePHP4から外部のデータベースにアクセスする方法解説
CakePHP4の数値項目は「like %10%」の部分一致検索(find select)はできない
CakePHP4でロギングスコープやログレベルを使用してログを出し分ける方法を解説
 
その他の「CakePHP4」に関する記事一覧
 
 

 - CakePHP 3.x 4.x 5.x

GoogleAdwords

GoogleAdwords

最後までお読みいただきましてありがとうございます。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!

Message

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

下記の空欄を埋めてください。 * Time limit is exhausted. Please reload CAPTCHA.

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

※入力いただいたコメントは管理者の承認後に掲載されます。

  関連記事

CakePHP3のユーザ管理・認証プラグイン CakeDC/Usersの導入・機能解説・3.1.5対応
CakePHP3のユーザ管理・ログイン認証プラグインCakeDC/Usersのインストール解説・3.6以降対応

CakePHP3のユーザ管理プラグイン Usersは、ユーザ登録、メール認証、ログイン認証、ユーザ管理、権限管理、reCAPTCHAなど会員制のサイトを簡単に実現可能。その導入方法、カスタマイズ方法を解説。

CakePHP4のCakeDC/Usersの画面、メール本文テンプレートのカスタマイズ方法解説
CakePHP4のCakeDC/Usersの画面、メール本文テンプレートのカスタマイズ方法解説

CakeDC謹製Usersプラグインの紹介。ユーザ新規登録の流れを紹介しつつ、テンプレートファイル、設定情報ファイルの場所とそれらをカスタマイズする方法を説明します。

CakePHP 2.3で PDFを作成する方法を調査「mpdf」「TCPDF」「FPDF」

CakePHPで PDFを編集、出力するには「mpdf」「TCPDF」「FPDF」といったプラグインがあり、使い勝手を比較検討しました。TCPDFが一番良さそうでした。

Google Analytics APIを CakePHP3で動かしてレポートデータを取得する方法の解説
Google Analytics APIを CakePHP3で動かしてレポートデータを取得する方法の解説

CakePHP3で Google Analytics APIからレポートデータを取得する処理の解説。PHPのサンプルソースをCakePHP3で動くように改造。加えて、ディメンションやメトリックスを条件に設定する方法なども。

CakePHP4で複数の引数(パラメータ)を付与してコマンドを実行する方法
CakePHP4で複数の引数(パラメータ)を付与してコマンドを実行する方法

CakePHP4でコマンドを実行する際に引数(パラメータ)をコマンド内で受け取る処理について解説。複数個の引数にも対応する記述方法も解説。

CakePHP 2.3 Search Pluginで検索処理 その5入力項目に複数項目入力した場合の AND検索、OR検索

CakePHPの検索プラグイン Search Pluginの検索処理の中で複数項目を入力した場合の AND検索、OR検索についての解説です。

CakePHP 2.3 Search Pluginで検索処理 その3入力エリア一つで複数の項目を同時に検索する方法

CakePHPの検索プラグイン Search Pluginの検索処理の中で入力エリア一つで複数の項目を同時に検索する方法を解説。

CakePHP 2.x系 Viewでのコメントの記述方法など

CakePHPにおいて View、ctpファイルでコメントを記述する方法を解説。

CakePHP4のユーザ管理・ログイン認証プラグインCakeDC/Usersのインストール解説
CakePHP4のユーザ管理・ログイン認証プラグインCakeDC/Usersのインストール解説

CakePHP4のユーザ管理プラグイン Usersは、ユーザ登録、メール認証、ログイン認証、ユーザ管理、権限管理、reCAPTCHAなど会員制のサイトを簡単に実現可能。その導入方法、カスタマイズ方法を解説。

CakePHP 2.3でファイルをアップロード・その2 ファイル名を乱数で設定

CakePHPのアップロードするファイル名を乱数で変更しセキュリティを高める方法を解説。