2014-03-03 61 views
1

我有一个表格,其格式为MM/DD/YY(字段名称为日期)。我需要计算总计当月的记录。从搜索中,这是我目前有的,但有些不对。我需要做一个convertToDate,是我的领域被称为“日期”,还是我完全失去了一些东西?本月计数记录

$totalcount = mysql_query("select count(*) as 'total' 
          FROM state_to_state 
          WHERE status = 99 AND type = 1 
          AND MONTH(`date`) = MONTH(CURDATE()) 
          AND YEAR(`date`) = YEAR(CURDATE())"); 

$totalnum = mysql_fetch_array($totalcount); 
if($totalnum['total'] > 0) { $month_status = $totalnum['total']." this Month. "; } 
+0

看起来不错,'日期'是日期类型? – 2014-03-03 20:48:48

+0

你会得到什么错误? – Barmar

+0

如果该字段以“mm/dd/yy”格式存储,那么它不是“日期”类型。 MySQL预计日期为'yyyy-mm-dd'。你真的使用两位数字的年份,你忘记了千年虫吗? – Barmar

回答

0

你的日期不是原生的mysql日期(varchar,可能?),所以你不能直接使用它们的mysql日期函数。 date('MM/DD/YY')将无法​​可靠地工作:

mysql> select month('03/03/14'), month('03/18/14'); 
+-------------------+-------------------+ 
| month('03/03/14') | month('03/18/14') | 
+-------------------+-------------------+ 
|     3 |    NULL | 
+-------------------+-------------------+ 

转换您的日期字段,以本地的mysql日期类型,或采取对性能有巨大的打击和他们onthefly通过str_to_date()转换为本地日期值。

+0

你是对的,它是一个varchar。当时唯一需要的日期是为了用户的方便 - 仅此而已。我会按照你的建议去做,并将所有转换为原生的mysql日期类型,并改变一切。谢谢! – user2727128