[英]SQL query with multiple LIKE operators, and BETWEEN dates statement
[英]SQL query between statement
我在PHP管理員中使用mySQL時遇到問題,查詢我的數據庫時遇到問題,這是查詢語句:
SELECT Record_ID, Datalog_ID, TIME, AVG( Value )
FROM `Datalog_Values`
WHERE Datalog_ID = '241'
AND TIME
BETWEEN '2012-06-01'
AND '2012-06-30'
GROUP BY HOUR( TIME )
我得到的結果只是第一天的結果,而不是period.ie的結果。
我的陳述有什么問題????
您的查詢使用MySQL的(隱藏)功能(稱為隱藏列)。 該查詢正在為Record_id,Datalog_id和Time選擇任意值,因為group by
子句中未提及。
如果我推測預期的查詢是:
SELECT Record_ID, Datalog_ID, hour(TIME), AVG( Value )
FROM `Datalog_Values`
WHERE Datalog_ID = '241' AND TIME BETWEEN '2012-06-01' AND '2012-06-30'
GROUP BY Record_id, Datalog_id, hour(TimE )
然后,假設查詢的目標是針對給定DataLog_id的每個Record_Id和一天中的小時產生結果,這便開始變得有意義。 您要獲取一天中每個小時還是一個月中每個小時的結果?
如果提供示例數據並解釋所需的輸出,則可以更好地回答您的問題。
您需要使用相同的數據類型進行比較。 所以,如果你的領域是日期/時間YYYY-MM-DD HH:MM:SS,那么你需要做的BETWEEN
使用相同的格式。 嘗試僅在兩個日期的末尾放置00:00:00。
如果“時間”列具有您在where條件中指定的格式('YYYY-MM-DD'),則按小時分組(時間)就沒有意義。 嘗試進行“按時間分組”或“按月分組(時間)”
否則,您將以錯誤的方式獲取where條件,並且需要在每個條件的末尾添加hh:mm:ss。
如果要每小時平均,請確保“時間”列的數據類型為“日期/時間”,這意味着其格式為('yyyy / MM / dd hh:mm:ss')
如果您使用這種格式,那么我想這個SO問題-答案將為您提供幫助: SQL Server按每小時DateTime計數進行分組?
當然,它適用於SQL Sever,但您會明白的。 您可以在此處看到如何按每天的小時數進行分組。 因為如果您僅按小時分組(時間),您將獲得整個月的特定小時的分組,而不是每天分開。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.