【问题标题】:Compare fileds with REGEXP in mysql 5.0在 mysql 5.0 中使用 REGEXP 比较文件
【发布时间】:2011-05-24 13:24:38
【问题描述】:

我想要一个嵌套的 mysql 请求,它计算每天的操作,如下所示:

SELECT `timestamp` AS `date`, 
  (SELECT COUNT('id') 
   FROM `actions` WHERE `timestamp` = `date`) AS `action_num`  
FROM `actions`;  

如果不是这样我需要计算每一天,而我得到的只是每个时间戳,那会很好用。如果它只是一个日期,它会工作。所以我想如果我可以从字符串中取出日期并进行比较,这可能会起作用:

SELECT `timestamp` AS `date`, 
  (SELECT COUNT('id') FROM `actions` 
   WHERE `timestamp` REGEXP '[[:digit:]]{4}-[[:digit:]]{2}-[[:digit:]]{2}' = `date`
   REGEXP '[[:digit:]]{4}-[[:digit:]]{2}-[[:digit:]]{2}') AS `action_num`  
FROM `actions`;

但它不起作用。

关于如何在 MySQL 中直接比较两个时间戳字段的日期有什么想法吗?

谢谢

【问题讨论】:

    标签: mysql regex select count


    【解决方案1】:

    很简单,内部查询应该是:

    SELECT count(id) FROM actions 
    WHERE DATE(`timestamp`) = DATE(`date`) as action_num
    

    见:http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date

    【讨论】:

    • 谢谢!!甚至不知道mysql有日期功能!
    【解决方案2】:

    你可以使用DATEDIFF()函数来比较MySQL中的日期, TIMESTAMPDIFF() 用于比较时间戳,DATE() 用于从时间戳中获取日期信息。
    MySQL's reference manual pages 提供更多日期和时间函数和示例。

    【讨论】:

      猜你喜欢
      • 2012-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-12
      • 1970-01-01
      • 2016-06-29
      • 1970-01-01
      • 2013-01-28
      相关资源
      最近更新 更多