如何在mysql查询中使用自定义joomla日期

时间:2016-08-21 18:35:22

标签: php mysql date joomla

我从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 ....

但它不起作用 任何想法?

1 个答案:

答案 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