MySQLで2桁の年の日付値を使用するのはなぜ良い習慣ではないのですか?
ご存知のとおり、YEAR(2)は1年を2桁の形式で格納します。たとえば、1969を1年として格納するために69と書くことができます。 YEAR(2)では、1970年から2069年(70年から69年)まで年を指定できます。
MySQLは、次のルールを使用して2桁の年の値を解釈します-
- 70〜99の範囲の年の値は1970〜1999に変換されます。
世紀が不明なため、この形式で保存された値はあいまいになるため、日付値を2桁の形式で保存しないでください。
mysql> Create Table year_test(val year(2)); Query OK, 0 rows affected, 1 warning (0.23 sec) mysql> insert into year_test(val) values('70'); Query OK, 1 row affected (0.14 sec) mysql> insert into year_test(val) values('00'); Query OK, 1 row affected (0.06 sec) mysql> select * from year_test; +-----+ | val | +-----+ | 70 | | 00 | +-----+ 2 rows in set (0.00 sec) mysql> select * from year_test where val = '1970'; +-----+ | val | +-----+ | 70 | +-----+ 1 row in set (0.03 sec) mysql> select * from year_test where val = '2000'; +-----+ | val | +-----+ | 00 | +-----+ 1 row in set (0.00 sec) mysql> select * from year_test where val = '1900'; Empty set (0.06 sec)
00を「val」に格納することにより、「1900」または「2000」のどちらの年を暗示するかは不明です。 MySQLはそれを2000年と解釈しています。
-
MySQLの日付値を持つレコードから最終日を見つける方法は?
最終日、つまり最新の日付を取得するには、サブクエリで集計関数MAX()を使用します。まずテーブルを作成しましょう- mysql> create table DemoTable ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, ExpiryDate date ); Query OK, 0 rows affected (1.40 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTable(ExpiryDate) va
-
MySQLで列の値をシャッフルしますか?
要素をシャッフルするには、ORDER BY RAND()を使用する必要があります。まずテーブルを作成しましょう- mysql> create table DemoTable1557 -> ( -> SubjectId int NOT NULL AUTO_INCREMENT PRIMARY KEY, -> SubjectName varchar(20) -> ); Query OK, 0 rows affected (0.91 sec) 挿入コマンド-を使用して