1

我有一个查询,我得到了帮助,但我又陷入了困境。

我的代码是

SELECT a.name, COUNT(*) AS num FROM table2 b 
INNER JOIN table1 a 
ON b.status_id=a.id 
GROUP BY status_id

我现在想做的只是显示在当前日期输入的结果?日期列在表 2 中。日期列的格式是日期和时间(例如 1341241153),由 CRM 以这种方式自动设置。我不确定这是什么格式!

我只需要检查日期是否与当天匹配。我希望这很清楚。

这是一个 MySQL 数据库。

任何帮助将不胜感激!

4

3 回答 3

3

使用此解决方案:

SELECT     a.name, COUNT(*) AS num
FROM       table2 b
INNER JOIN table1 a ON b.status_id = a.id
WHERE      b.datecol >= UNIX_TIMESTAMP(CURDATE()) AND
           b.datecol < UNIX_TIMESTAMP(CURDATE() + INTERVAL 1 DAY)
GROUP BY   b.status_id

这将避免将您的日期列包装在一个函数中,这会使查询不可分割(即不能使用索引)。通过在裸日期列上进行比较,MySQL 仍然能够利用索引(如果您在日期列上设置了它),并且它应该非常有效。

如果您绝对知道输入的日期永远不会是将来的某个时间(即明天或第二天),您可以进一步简化它:

SELECT     a.name, COUNT(*) AS num
FROM       table2 b
INNER JOIN table1 a ON b.status_id = a.id
WHERE      b.datecol >= UNIX_TIMESTAMP(CURDATE())
GROUP BY   b.status_id

第二个条件检查被删除,因为它不需要检查它是否在未来的一天。

于 2012-07-15T19:37:13.007 回答
2

试试这个::

SELECT a.name, COUNT(*) AS num FROM table2 b 
INNER JOIN table1 a 
ON b.status_id=a.id 

where DATE(column_date) = DATE(now())  
GROUP BY status_id
于 2012-07-15T14:45:24.280 回答
2

您应该from_unixtime()在日期列上使用函数,该函数包含1341241153.
因为这些值似乎以 unix 时间戳格式存储。

示例

mysql> select
    ->     from_unixtime( 1341241153 ) as 'my_datetime_1341241153',
    ->     date( from_unixtime( 1341241153 ) ) as 'my_date_1341241153',
    ->     curdate(),
    ->     curdate() > date( from_unixtime( 1341241153 ) ) 'is_today_later?',
    ->     curdate() = date( from_unixtime( 1341241153 ) ) 'is_today_equal?',
    ->     curdate() < date( from_unixtime( 1341241153 ) ) 'is_today_before?'
    -> from
    ->     dual
    -> \G
*************************** 1. row ***************************
my_datetime_1341241153: 2012-07-02 20:29:13
    my_date_1341241153: 2012-07-02
             curdate(): 2012-07-15
       is_today_later?: 1
       is_today_equal?: 0
      is_today_before?: 0
1 row in set (0.00 sec)

您的查询应该是:

SELECT a.name, COUNT(*) AS num FROM table2 b 
INNER JOIN table1 a 
ON ( b.status_id=a.id and curdate() = date( from_unixtime( b.crm_date_time_column ) ) )
GROUP BY status_id
于 2012-07-15T15:18:34.127 回答