MySQL |在某一天使用列选择数据的最简单方法

时间:2015-01-11 09:54:39

标签: php mysql pdo

我有一个包含以下结构的表

+-------+-------------+------+-----+---------+----------------+
| 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类型,或者是否有一种简单的方法可以为当天选择不同的值,并且可以在多天内执行此操作&名。

我正在使用PDO的{​​{1}}扩展名来查询数据库,我目前正在使用以下代码来创建查询。

PHP

我很乐意尝试澄清这篇文章中未被理解的任何内容。这对我来说似乎很清楚,但那可能只是因为我是那个写它的人。

2 个答案:

答案 0 :(得分:0)

在我看来,我会使用datetime列数据类型。在进行像你这样的查询时,它们更容易处理。

顺便说一下,你的查询似乎是正确的,但是你需要输入一个代表UNIX_TIMESTAMP的int。

此致 哈维。

答案 1 :(得分:0)

使用GROUP BY,您可以计算每个名字的所有时间。试试这个

SELECT name, COUNT(*) as time1
  FROM test
 WHERE name = 'name' 
   AND time BETWEEN :time1First AND  :time1Second
 GROUP BY name
 ORDER BY name;