欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

drupal 7 里面 视图 里面 涉及到时间 都会在 sql 里面 加上 SEC_TO_TIME(28800)) 这一句,,可是 我的 网站里根本就不需要这一句怎么办 我的网站里对于时区设置是对的 有大用 有大大用

我自己亲自做的  ,,,,,,,,最主要的是看这个字段的时间到底对不对

1) 对于字段,设为  UTC

image.png

image.png









在 Drupal 7 中,视图生成的 SQL 查询通常会根据系统的设置和字段的存储格式处理时间。如果你发现生成的 SQL 查询中总是包含 SEC_TO_TIME(28800),并且你不需要这个时区调整,你有几个选择来解决这个问题。

1. 检查时间字段配置

确保在内容类型或字段配置中,时间字段的存储和显示格式是正确的,且没有应用不必要的时区设置。在 Drupal 7 中,时间字段(例如创建时间)通常使用 UTC 存储,而在显示和使用时,需要应用相应的时区。

2. 调整视图设置

在视图的设置中,有一些选项可能影响时间的处理:

  • 字段设置:选择字段时,可以选择如何处理时间显示。在"格式"选项中,确保不选中任何可能导致时区转换的选项。

  • 过滤条件:检查你的过滤条件,如果引用了时间字段,确保没有意外地选择了会导致时区转换的选项。

3. 使用自定义 SQL

如果你发现默认生成的 SQL 始终包含不需要的函数,你可以考虑创建自定义的视图查询,或者使用 hook_views_query_alter() 进行调整。下面是一个示例:

php

function mymodule_views_query_alter(&$view, &$query) {  // 仅在处理特定视图时应用调整  if ($view->name == 'your_view_name') {    // Remove SEC_TO_TIME from the query    $query->add_where(0, "field_data_field_rc_created_time.field_rc_created_time_value >= DATE_FORMAT(NOW(), '%Y-%m-%d')", NULL, 'AND');    // 继续根据需要定制你的查询  } }

在这个 hook 中,你可以进行适当的查询修改,以确保不包含不必要的 SQL 函数。

4. 创建自定义视图

如果可以接受,你可以根据需要自定义视图,避免选择那些自动生成的时间字段,并手动处理时间比较。这可能涉及到直接在视图的显示中自定义一个新的查询。

5. 修改数据库的时间设置

有时 Drupal 系统的默认时区设置可能会导致此类问题。你可以在 Drupal 的管理设置中检查和调整时间设置:

  • 访问 admin/config/regional/settings,然后确认时区设置是否符合你的需求。

通过以上方法,你可以试图解决 SQL 中不需要的 SEC_TO_TIME(28800) 的问题,并确保生成的查询符合你的要求。


普通分类: