2015-09-27 154 views
1

我只需要選擇與今天的日期記錄?我使用這個查詢:Mysql的今天日期

$query = mysql_query (
    "SELECT 
     tentego_img.* 
    FROM 
     tentego_img 
    INNER JOIN tentego_img_vote ON tentego_img.id = tentego_img_vote.object_id 
    WHERE 
     cat = '".$cat [ ' id ' ]."' 
    GROUP BY 
     tentego_img_vote.object_id 
    ORDER BY 
     SUM(
      (
       CASE 
       WHEN tentego_img_vote.vote = '0' 
       AND DATE(date) = DATE(NOW()) THEN 
        '1' 
       ELSE 
        '-1' 
       END 
      ) 
     ) DESC 
    LIMIT 1" 
); 

在此摘錄代碼:

(CASE WHEN tentego_img_vote.vote = '0' AND DATE(date) = DATE(NOW()) THEN '1' ELSE '-1' END) 

如何選擇今天的日期?

+0

顯示您的數據庫架構 –

+0

...不要使用PHP的過時的mysql_ API – Strawberry

回答

0

這應該爲你工作,更改日期格式以匹配您使用的數據庫格式:

(CASE WHEN tentego_img_vote.vote = '0' AND STR_TO_DATE(date, '%d.%m.%Y') > CURRENT_TIMESTAMP - INTERVAL 1 DAY) THEN '1' ELSE '-1' END) //where 'date' is the column name of the date you're checking. 
3

這是您的查詢,固定起來:

  • 要使用表別名。
  • 要從更加明顯表GROUP BY領域。
  • 爲了避免單引號

這裏的數值是查詢:

SELECT i.* 
FROM tentego_img i INNER JOIN 
    tentego_img_vote iv 
    ON i.id = iv.object_id 
WHERE cat = '".$cat['id']."' 
GROUP BY i.id 
ORDER BY SUM(CASE WHEN iv.vote = 0 AND DATE(date) = DATE(NOW()) 
        THEN 1 ELSE -1 END) DESC 
LIMIT 1; 

如果你想只從今天的投票,然後將情況向WHERE條款:

SELECT i.* 
FROM tentego_img i INNER JOIN 
    tentego_img_vote iv 
    ON i.id = iv.object_id 
WHERE cat = '".$cat['id']."' AND 
     DATE(date) = CURDATE() 
GROUP BY i.id 
ORDER BY SUM(CASE WHEN iv.vote = 0 
        THEN 1 ELSE -1 END) DESC 
LIMIT 1; 

一個更好的方法是使用不平等,而不是一個功能:

WHERE cat = '".$cat['id']."' AND 
     (date >= CURDATE() AND 
     date < DATEADD(CURDATE(), interval 1 day) 
    ) 

這是更好,因爲它可以對date使用索引,如果合適的話。