簡體   English   中英

MySQL | 在特定日期使用列選擇數據的最簡單方法

[英]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類型是明智的選擇,還是有一種簡單的方法可以為表選擇不同的值一天,並進行數天和多次命名。

我正在使用PHPPDO擴展來查詢數據庫,並且當前正在使用以下代碼來創建查詢。

$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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM