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';
这总是有效还是代码可能会在某些时候破坏?
答案 0 :(得分:23)
DATE类型用于具有日期部分但没有时间部分的值。 MySQL以'YYYY-MM-DD'格式检索并显示DATE值。支持的范围是“1000-01-01”到“9999-12-31”。
答案 1 :(得分:8)
以下是不同的日期范围,具体取决于您的列类型:
日期类型用于具有日期部分但没有时间部分的值。 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)