查看挂钩仅显示1969日期

时间:2011-09-20 11:39:20

标签: mysql drupal-6 drupal-views

我有一张表格如下:

+--------------------+-------------+------+-----+---------+-------+
| Field              | Type        | Null | Key | Default | Extra |
+--------------------+-------------+------+-----+---------+-------+
| ProductsDownloadId | int(11)     | NO   | PRI | 0       |       |
| RCContactID        | int(11)     | NO   | MUL | NULL    |       |
| product_name       | varchar(50) | YES  | MUL | NULL    |       |
| download_date      | timestamp   | YES  |     | NULL    |       |
+--------------------+-------------+------+-----+---------+-------+

我正在为这个表编写一个模块,以便在Drupal 6 View中查看。

我按照我在这里找到的例子: http://drupalcontrib.org/api/drupal/contributions--views--docs--docs.php/function/hook_views_data/6

所以我这样暴露了download_date:

    $data['products_downloaded']['download_date']=array(
       'title'=>t("Download Date"),
       'help'=>t("When Product was downloaded by the user"),
   'field' => array(
         'handler' => 'views_handler_field_date', 
     'click sortable' => TRUE,
        ), 
        'sort' => array(
               'handler' => 'views_handler_sort',
      ), 
    'filter' => array(
        'handler' => 'views_handler_filter_date',
   ), 

);

但是当我将它添加到视图中时,所有日期显示为“12/31/1969 - 19:33”。我的表中没有一个日期是:

编辑:已更正的查询:

 mysql> select count(1) from products_downloaded where download_date <'2000-12-31     23:59:59.999999';
 +----------+
 | count(1) |
 +----------+
 |        0 |
 +----------+
 1 row in set (0.04 sec)

我也在视图中使用格式'r'进行了自定义日期格式,我得到了 1969年12月31日星期三19:33:31 -0500所有日期。

那么我的模块出了什么问题?

2 个答案:

答案 0 :(得分:1)

您的查询:

select count(1) from products_downloaded where download_date <'12/31/2000 -  19:33'

你的问题是MySQL希望日期以不同的格式给出。

您需要按以下格式提供日期:

'2007-12-31 23:59:59.999999'

(您可以根据需要删除微秒,秒等以获得所需的精度)

因此,在您的情况下,您的查询应如下所示:

select count(1) from products_downloaded where download_date <'2000-12-31 19:33'

这应该正确查询字段。

顺便说一句 - 如果您的日期出现意外地显示为1969年,则意味着您可能也在其他查询中使用了错误的格式。您可能也想检查一下。

有关日期时间的信息,请参阅MySQL手册页:http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html

答案 1 :(得分:0)

我能够确定的是PHP或Drupal无法理解返回处理器的任何内容。我使用自定义钩子搞砸了,并获得了DateTime构造函数接受的值。从那里 。 。 。很容易得到日期格式。