我的查询不适用于日期

时间:2013-12-10 17:56:08

标签: mysql sql phpmyadmin

我想从过去的最新日期返回记录......但它不起作用

SELECT * 
FROM EVENTS WHERE 1 
AND discipline_id
IN ( 2 ) 
AND event_start_date < NOW( ) 
ORDER BY DATE( event_start_date ) ASC


event_start_date is of type date in the database ..

3 个答案:

答案 0 :(得分:0)

仅按event_start_date

尝试排序
SELECT * 
FROM EVENTS
WHERE discipline_id
IN ( 2 ) 
AND event_start_date < NOW( ) 
ORDER BY event_start_date DESC

此外,我不确定你为什么要做WHERE 1,因为这总是会回归真实。

答案 1 :(得分:0)

如果您想从db中选择最新记录,请使用以下类型的查询

SELECT * FROM 
TABLE_NAME 
WHERE DATE IN (MAX(DATE))

答案 2 :(得分:0)

差不多半小时过去了,没有回复/反馈,一次一步地查询你的问题......并以此为基础。

一次一步......首先,简化为一个ID和所有日期,但按照...应用订单

SELECT *
   FROM EVENTS 
   WHERE discipline_id = 2 
   ORDER BY event_start_date DESC

现在,看看结果......如果它没有返回任何内容,你可能没有数据,或者其他地方没有更大的问题。如果该操作有效,那么由于事件日期是降序,您应该能够看到是否有任何记录在您尝试的NOW()标准之前。然后只需添加NOW()条件

SELECT *
   FROM EVENTS 
   WHERE discipline_id = 2 
      AND event_start_date < NOW()
   ORDER BY event_start_date DESC

如果没有记录,那么就是这样,但是这个查询中没有任何复杂的东西......是的,这个数据最近的日期是在列表的顶部(vs最旧的现在在底部)。如果您只想在now()之前的MOST RECENT事件,那么只需应用限制1即可获得最新的

SELECT *
   FROM EVENTS 
   WHERE discipline_id = 2 
      AND event_start_date < NOW()
   ORDER BY event_start_date DESC
   LIMIT 1