日期时间间隔,计入 - 具有自己的日期/时间格式

问题描述:

我试图计算今天和昨天的访问者数量。日期时间间隔,计入 - 具有自己的日期/时间格式

我的问题是,我用我自己的日期和时间格式,将它保存在我的数据库是这样的:HH:MM DD.MM.YYYY,现在得到了游客昨天我尝试这样做:

$sql="SELECT COUNT(*) as count FROM lst_visitors WHERE country = '$country' AND DATE(visits) = DATE_SUB(CURDATE(),INTERVAL 1 DAY)"; 

和今天:

$sql="SELECT COUNT(*) as count FROM lst_visitors WHERE country = '$country' AND DATE(visits) = DATE(NOW())"; 

但是,这只是显示为0的一切。

我然后设法:

$today = date("H:i d.m.Y"); 
$sql="SELECT COUNT(*) as count FROM lst_visitors WHERE country = '$country' AND DATE(visits) = DATE($today())"; 

但并不输出任何东西。

+3

*?为什么将日期/时间存储为字符串,而不是日期时间或类似的东西? – 2013-03-27 14:15:49

+0

立即查看['STR_TO_DATE'](https://dev.mysql.com/doc/refman/5.5/zh-CN/date-and-time-functions.html#function_str-to-date)以查看修复程序修补程序,但真的,存储日期/时间,以及'DATETIME' ...... – Wrikken 2013-03-27 14:18:39

您应该将其存储为datetime类型,您应该将其转换为此类型。在此同时,您可以使用STR_TO_DATE

SELECT STR_TO_DATE('15:50 27.03.2013', '%H:%i %d.%m.%Y') 

结果

| STR_TO_DATE('15:50 27.03.2013', '%H:%I %D.%M.%Y') | 
----------------------------------------------------- 
|      March, 27 2013 15:50:00+0000 |

应用的领域:

为什么*您正在使用自己的日期/时间格式
$sql="SELECT COUNT(*) as count FROM lst_visitors WHERE country = '$country' 
      AND DATE(STR_TO_DATE(visits, '%H:%i %d.%m.%Y')) = DATE(NOW())"; 

$sql="SELECT COUNT(*) as count FROM lst_visitors WHERE country = '$country' 
      AND DATE(STR_TO_DATE(visits, '%H:%i %d.%m.%Y')) = DATE_SUB(CURDATE(),INTERVAL 1 DAY)"; 
+0

谢谢你,这工作。我会重新编码日期时间,然后我想,在此期间,我将使用您的解决方案。我会尽快接受。 – 2013-03-27 14:24:54