Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL选择datetime为X天前的行_Php_Mysql_Datetime - Fatal编程技术网

Php MySQL选择datetime为X天前的行

Php MySQL选择datetime为X天前的行,php,mysql,datetime,Php,Mysql,Datetime,我在数据库中有一个会议时间表表。它有两列,分别名为start和end,由于我无法访问用新数据填充此表的php脚本,因此我不确定它是哪种格式 但是PHPMyAdmin显示start和end的列是varchar(15),所以我想它应该是datetime兼容的 数据库中的示例:1378033200 截至2013年9月1日 我的问题是,我想拉会议,并显示在一个html页面,但我不希望会议超过2天前(服务器时间)显示出来。问题是什么 SELECT * FROM schedules ORDER BY sta

我在数据库中有一个会议时间表表。它有两列,分别名为
start
end
,由于我无法访问用新数据填充此表的php脚本,因此我不确定它是哪种格式

但是PHPMyAdmin显示start和end的列是
varchar(15)
,所以我想它应该是datetime兼容的

数据库中的示例:1378033200 截至2013年9月1日

我的问题是,我想拉会议,并显示在一个html页面,但我不希望会议超过2天前(服务器时间)显示出来。问题是什么

SELECT * FROM schedules ORDER BY start
差不多

SELECT * FROM schedules ORDER BY start WHERE start > 2 days ago
我试过了,但似乎什么都没用

SELECT *
FROM schedules 
WHERE COALESCE(start, 0) < CURDATE() - INTERVAL 2 DAY 
ORDER BY start
选择*
从时间表
其中聚结(开始,0)
但是PHPMyAdmin显示开始和结束的列是 varchar(15)所以我想它应该是日期时间兼容的

你猜错了。字符串只能作为字符串排序。这意味着,除非您使用可排序的日期格式(
YYYY/MM/DD
是一种格式:我不知道其他格式),否则您必须解析所有结果并使用PHP自己进行计算(否则,2000年11月13日将在2000年1月14日之前)。或者,您可能希望为列使用正确的类型:。完成此操作后,请使用
运算符

对于2天前的
部分,您想知道MySql有一个内置变量,可以将其。如果你能正确地设计数据库,你甚至不必接触PHP(这是一件必须的事情)。

试试这个:

SELECT *
FROM schedules 
WHERE COALESCE(start, 0) < DATE_SUB(NOW(), INTERVAL 2 DAYS)
ORDER BY start
选择*
从时间表
其中COALESCE(开始,0)
我自己的解决方案错了,我想你的也错了。@Saeid87你认为呢?你试过我的解决方案吗?