9

PHPとMySQLが認識する最大の日付は何ですか?

つまり、タイムラインごとに異なる値があり、次のように、それらすべてをBETWEENMySQLのselectとして作成したいと思います。

SELECT * FROM table WHERE date BETWEEN '2011-10-01' AND '2011-10-02';
SELECT * FROM table WHERE date BETWEEN '2011-10-03' AND '2011-10-10';

すべてのオプションを取得するために、次のようなことを考えていました。

SELECT * FROM table WHERE date BETWEEN '0000-01-01' AND '2011-10-01';
SELECT * FROM table WHERE date BETWEEN '2011-10-02' AND '2011-10-10';
SELECT * FROM table WHERE date BETWEEN '2011-10-11' AND '9999-12-31';

これは常に機能しますか、それともある時点でコードが破損する可能性がありますか?

4

6 に答える 6

28

DATE型は、日付部分はあるが時間部分はない値に使用されます。MySQLは、DATE値を「YYYY-MM-DD」形式で取得して表示します。サポートされる範囲は「1000-01-01」から「9999-12-31」です。

http://dev.mysql.com/doc/refman/5.5/en/datetime.htmlから取得

于 2012-11-01T14:21:15.290 に答える
10

列の種類に応じて、さまざまな日付範囲があります。

ドキュメントによると

DATE型は、日付部分はあるが時間部分はない値に使用されます。MySQLは、DATE値を「YYYY-MM-DD」形式で取得して表示します。サポートされる範囲は「1000-01-01」から「9999-12-31」です。

DATETIMEタイプは、日付と時刻の両方の部分を含む値に使用されます。MySQLは、DATETIME値を「YYYY-MM-DDHH:MM:SS」形式で取得して表示します。サポートされる範囲は、「1000-01-0100:00:00」から「9999-12-3123:59:59」です。

TIMESTAMPデータ型は、日付と時刻の両方の部分を含む値に使用されます。TIMESTAMPの範囲は「1970-01-0100:00:01」UTCから「2038-01-1903:14:07」UTCです。

于 2012-11-01T14:22:39.080 に答える
2

MySQLのDATETIMEタイプは「1000-01-01」から「9999-12-31」までをサポートします。それで十分なはずです。

PHPはそれらも分析できます。2桁の年ではないので、それは良いことです。9999-01-01にstrtotimeを実行したところ、動作しました。

于 2012-11-01T14:23:04.490 に答える
1

あなたはこのようにそれをすることができます:

SELECT * FROM table WHERE date < '2011-10-01';
SELECT * FROM table WHERE date BETWEEN '2011-10-02' AND '2011-10-10';
SELECT * FROM table WHERE date > '2011-10-11' 
于 2012-11-01T14:15:22.577 に答える
0

日付は整数にすぎません。整数サイズはシステムに依存します。つまり、32ビット、64ビットなどです。

PHPでは、整数サイズは定数PHP_INT_SIZEを使用して決定でき、最大値は定数PHP_INT_MAXを使用して決定できます。

mysqlでは、次のようなことができます。SELECT〜0 as max_bigint_unsigned

于 2012-11-01T14:22:40.787 に答える
-2

たぶん、最初にテーブルから最大値と最小値を取得します。

SELECT * FROM table WHERE date BETWEEN (SELECT MIN(date) FROM table) AND (SELECT MAX(date) FROM table)
于 2012-11-01T14:15:27.380 に答える