[英]MySQL | Easiest way to select data with a column on a certain day
我有一個具有以下結構的表
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(32) | NO | | NULL | |
| time | int(19) | NO | | NULL | |
+-------+-------------+------+-----+---------+----------------+
time
被設定為一個UNIX_TIMESTAMP
。
如果我想用一天中的時間值來計算具有特定名稱的值的數量,將表和應用程序更改為使用DATETIME
類型是明智的選擇,還是有一種簡單的方法可以為表選擇不同的值一天,並進行數天和多次命名。
我正在使用PHP
的PDO
擴展來查詢數據庫,並且當前正在使用以下代碼來創建查詢。
$stmt = $dbh->prepare("SELECT
(SELECT COUNT(*) FROM `test` WHERE `name`='name' AND `time` > :time1First AND `time` < :time1Second) AS `time1`, ...");
我將很樂於嘗試澄清本文中未理解的所有內容。 對我來說似乎很清楚,但這可能只是因為我是撰寫它的那個人。
坦白地說,我將使用datetime列數據類型。 在執行像您這樣的查詢時,它們更易於特別處理。
順便說一句,您的查詢似乎正確,但是您需要輸入一個表示UNIX_TIMESTAMP的整數。
問候,哈維。
使用GROUP BY,您可以計算每個名稱的所有時間。 嘗試這個
SELECT name, COUNT(*) as time1
FROM test
WHERE name = 'name'
AND time BETWEEN :time1First AND :time1Second
GROUP BY name
ORDER BY name;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.