PHP和MySQL最小和最大可能的日期

时间:2012-11-01 14:10:52

标签: php mysql date

PHP和MySQL识别的最大日期是什么?

我的意思是,我对不同的时间轴有不同的值,我希望在MySQL中选择BETWEEN,如下所示:

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';

这总是有效还是代码可能会在某些时候破坏?

6 个答案:

答案 0 :(得分:23)

  

DATE类型用于具有日期部分但没有时间部分的值。 MySQL以'YYYY-MM-DD'格式检索并显示DATE值。支持的范围是“1000-01-01”到“9999-12-31”。

取自http://dev.mysql.com/doc/refman/5.5/en/datetime.html

答案 1 :(得分:8)

以下是不同的日期范围,具体取决于您的列类型:

As per docs

日期类型用于具有日期部分但没有时间部分的值。 MySQL以'YYYY-MM-DD'格式检索并显示DATE值。 支持的范围是'1000-01-01'到'9999-12-31'。

DATETIME类型用于包含日期和时间部分的值。 MySQL以'YYYY-MM-DD HH:MM:SS'格式检索并显示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。

答案 2 :(得分:2)

MySQL' DATETIME类型支持来自" 1000-01-01"至" 9999-12-31"。这应该足够了。

PHP也可以分析它们;它们不是两位数年,所以它很好。我刚刚在9999-01-01运行了strtotime并且它运行了。

答案 3 :(得分: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' 

答案 4 :(得分:0)

日期只不过是整数。整数大小取决于系统;即32位,64位等

在php中,整数大小可以使用常量PHP_INT_SIZE确定,最大值使用常量PHP_INT_MAX

在mysql中你可以做一些事情:           SELECT~0 as max_bigint_unsigned

答案 5 :(得分:-1)

可能首先从你的表中获取最大值和最小值:

SELECT * FROM table WHERE date BETWEEN (SELECT MIN(date) FROM table) AND (SELECT MAX(date) FROM table)