【问题标题】:MySQL - HOUR(Datetime)MySQL - 小时(日期时间)
【发布时间】:2014-04-10 18:35:15
【问题描述】:

我在这个查询中有一个错误。错误说预期的已知函数,得到'HOUR'。如果我删除此部分,查询将正常工作 (AND HOUR({$nowDate}) = 11)

SELECT c FROM ProConvocationBundle:Convocation c
INNER JOIN ProCommunityBundle:Community co WITH co.id = c.community
INNER JOIN ProProposalBundle:Proposal p WITH p.convocation = c.id
WHERE c.firstNotificationAfterConvocation = FALSE
AND c.status <> 'finished' AND c.date >= {$minDate} AND HOUR({$nowDate}) = 11

$nowDate$minDate 都是 Datetime 格式。

知道我做错了什么吗?

【问题讨论】:

  • 您使用的是哪种数据库产品(SQL Server、MySQL、Oracle 等...)?
  • @BryceAtNetwork23 - 是的,对不起。 MySQL。

标签: mysql sql datetime


【解决方案1】:

在您发表评论后进行编辑:

如果$dateTime 只是一个格式为2014-04-11 08:38:00 的字符串并且您想要小时,您可以使用这个:

echo date('H', strtotime($nowDate))

如果$nowDate 一个PHP DateTime object,可以使用下面的

echo $nowDate->format('H');

与 MySQL 无关 :)

【讨论】:

  • 谢谢,但我只想检查 $nowDate 小时是否为 11。与 c.date 无关。
【解决方案2】:

我认为问题是您需要将 $nowDate 转换为 String 因为 HOUR 函数需要 String 作为参数:

SELECT c FROM ProConvocationBundle:Convocation c
INNER JOIN ProCommunityBundle:Community co WITH co.id = c.community
INNER JOIN ProProposalBundle:Proposal p WITH p.convocation = c.id
WHERE c.firstNotificationAfterConvocation = FALSE
AND c.status <> 'finished' AND c.date >= {$minDate} AND HOUR({$nowDate->format('H:i:s')}) = 11

这应该可以工作

【讨论】:

    猜你喜欢
    • 2011-10-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-21
    • 2017-04-14
    • 1970-01-01
    • 2013-06-16
    • 2011-03-01
    • 2010-10-01
    相关资源
    最近更新 更多