Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.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
Mysql 我如何从我的表中获取记录已有2天以上了_Mysql - Fatal编程技术网

Mysql 我如何从我的表中获取记录已有2天以上了

Mysql 我如何从我的表中获取记录已有2天以上了,mysql,Mysql,为什么我的间隔日不能在mysql语句中工作 我想要2天以上的孩子。我就是这样尝试的 SELECT t.*, ct.*,cd.*, max(t.transactiontime) as maxtime FROM exp_channel_titles as ct LEFT JOIN transactions as t on (ct.entry_id = t.restaurant_id) LEFT JOIN exp_channel_data as cd on (ct.entry_id = cd.entr

为什么我的间隔日不能在mysql语句中工作

我想要2天以上的孩子。我就是这样尝试的

SELECT t.*, ct.*,cd.*, max(t.transactiontime) as maxtime
FROM exp_channel_titles as ct
LEFT JOIN transactions as t on (ct.entry_id = t.restaurant_id)
LEFT JOIN exp_channel_data as cd on (ct.entry_id = cd.entry_id)
WHERE t.cardid > 0 
and maxtime < ( CURDATE() - INTERVAL 2 DAY )
and t.restaurant_id > 0
and ct.status= 'open'
Group by ct.entry_id
order by maxtime desc
这是我想要的输出

TransactionID          Title           Date
23128                  Mama Rosa       2013-05-15 14:42:44
23126                  Rohan           2013-05-14 12:46:56
但我得到了这个错误

Error Number: 1054

Unknown column 'maxtime' in 'where clause'

SELECT t.*, ct.*,cd.*, max(t.transactiontime) as maxtime FROM exp_channel_titles as ct LEFT JOIN transactions as t on (ct.entry_id = t.restaurant_id) LEFT JOIN exp_channel_data as cd on (ct.entry_id = cd.entry_id) WHERE t.cardid > 0 and maxtime < ( CURDATE() - INTERVAL 2 DAY ) and t.restaurant_id > 0 and ct.status= 'open' Group by ct.entry_id order by maxtime desc

Filename: libraries/Functions.php(656) : eval()'d code

Line Number: 46
错误号:1054
“where子句”中的未知列“maxtime”
选择t.*、ct.*、cd.*、max(t.transactiontime)作为maxtime,从exp_channel_标题中选择t.*、ct.*、cd.*、max(t.transactiontime)作为ct LEFT JOIN transactions作为t on(ct.entry_id=t.restaurant_id)作为cd on(ct.entry_id=cd.entry_id),其中t.cardid>0且maxtime<(CURDATE()-间隔2天)和t.restaurant_id>0和ct.status='open'Group by ct.entry_id order by maxtime desc
文件名:libraries/Functions.php(656):eval()d代码
电话号码:46
试试:

maxtime

CURDATE()
返回
DATE
类型,您需要
DATETIME
类型,因此您应该使用
NOW()

在查询中使用CURDATE,但据我所知,您的日期列是DATETIME数据类型,所以

现在()=2008-11-1112:45:34

CURDATE()=008-11-11

CURTIME()=12:45:34

这就是mysql函数返回的结果。在这里使用正确的函数

maxtime < ( CURDATE() - INTERVAL 2 DAY )  
maxtime<(CURDATE()-间隔2天)

将CURDATE()更改为NOW(),但这不是您的解决方案。您需要找出答案。

您不能在where子句中使用别名,已使用的最大值(t.transactiontime)

选择。。。其中Date我刚刚更新了我的问题,出现了一个错误,您不能在where或order by子句中使用别名。。。您必须使用您使用的实际函数
max(t.transactiontime)
…您能给我一个例子吗?这个
maxtime<(CURDATE()-间隔2天)
应该从
WHERE
子句移动到
HAVING
子句,您需要在
groupby
子句之后添加它。在这种方法中,时间(H:i:s)越长的记录从现在开始()将被忽略,例如:NOW()-间隔2天=2013-04-15 13:17:00,日期为2013-04-15 13:18:00的记录将被忽略,明白我的意思吗?不要将条件放在
WHERE
子句上(这就是发生错误的原因),而是将其放在
HAVING
子句中,如
HAVING max(t.transactiontime)
maxtime < DATE_FORMAT( NOW() - INTERVAL 2 DAY ,'%Y-%m-%d 23:59:59')
maxtime < ( CURDATE() - INTERVAL 2 DAY )