我有一张表格如下:
+--------------------+-------------+------+-----+---------+-------+
| 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所有日期。
那么我的模块出了什么问题?
答案 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构造函数接受的值。从那里 。 。 。很容易得到日期格式。