我从Joomla中的自定义类中获得此查询,该类使用CURDATE和NOW。
$query = "SELECT DISTINCT catid FROM table_x WHERE DATE(publish_up)=CURDATE() AND publish_up<=NOW()";
默认服务器时间必须更改,所以我想将其更改为使用从此处调用的joomla自定义时间:
$date = JFactory::getDate('now', new DateTimeZone('Europe/Berlin'));
我希望它很容易(因为我有点不高兴)喜欢
....WHERE DATE(publish_up)='".$date."' AND ....
但它不起作用 任何想法?
答案 0 :(得分:1)
SQL CURDATE()和NOW()使用不同的格式 http://www.w3schools.com/sql/func_curdate.asp 因此,如果您想将它们与您的日期进行比较,则需要准备好
请查看下面的示例代码
$nowdate = JFactory::getDate('now', new DateTimeZone('Europe/Berlin')); // 2016-08-23 15:01:14
$curdate = JFactory::getDate('now', new DateTimeZone('Europe/Berlin'))->format('Y-m-d'); // 2016-08-23
对于Joomla早于v3.3,你应该使用
$curdate = JFactory::getDate('now', new DateTimeZone('Europe/Berlin'))->toFormat('Y-m-d'); // 2016-08-23
然后您可以使用JDatabase构建查询
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select("distinct ". $db->quoteName('id'));
$query->from($db->quoteName('#__content'));
$query->where($db->quoteName('publish_up') .' <= '. $db->quote( $nowdate )); //today and older
$query->where('Date('.$db->quoteName('publish_up').')' . ' = '. $db->quote( $curdate )); // today
$query->order('id ASC');
$db->setQuery($query);
$rows = $db->loadRowList();
print_r($rows);
请查看JDate文档 https://docs.joomla.org/How_to_use_JDate