Просмотр крючка отображает только 1969 даты - PullRequest
0 голосов
/ 20 сентября 2011

У меня есть таблица, которая выглядит следующим образом:

+--------------------+-------------+------+-----+---------+-------+
| 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

Итак, я выставил дату загрузки следующим образом:

    $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',
   ), 

);

Но когда я добавляю его в представление, все даты отображаются как «31.12.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' в представлении, и я получил Ср, 31 декабря 1969 г. 19:33:31 -0500 для всех дат.

Так что я сделал не так на моем модуле?

Ответы [ 2 ]

1 голос
/ 20 сентября 2011

Ваш запрос:

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

0 голосов
/ 04 октября 2011

Что я смог определить, так это то, что PHP или Drupal не могли понять, что возвращается процессору. Я возился с пользовательским хуком и получил значение, которое будет принято конструктором DateTime. Оттуда . , , вернуть форматы даты было легко.

...