【问题标题】:MySQL match records with like operatorMySQL 使用 like 运算符匹配记录
【发布时间】:2013-08-11 11:46:56
【问题描述】:

我的表中有时间戳字段。

例如,我的表中有一个值,如下所示:

2013-08-11 16:18:00

现在我想要这样的结果:

2013-08-11 16:18

我不想匹配时间戳中的 秒。

我的查询是:

UPDATE n2jm0_cronjob_run SET state=0 WHERE crondate LIKE '2013-08-11 16:18:02'

(来自 cmets 的更新)

我无法直接从查询中删除秒数

【问题讨论】:

  • 不要将like 与日期时间值一起使用。只需进行比较(使用日期时间对象而不是字符串)。我不是 php 人,但本质上是:WHERE crondate >= '2013-08-11 16:18:00' AND crondate < '2013-08-11 16:19:00'

标签: mysql sql date-format


【解决方案1】:
UPDATE n2jm0_cronjob_run SET state=0 WHERE crondate LIKE '2013-08-11 16:18%'

如果我理解正确的话,可能是这样的。

【讨论】:

  • 嘿,我不能直接从查询中删除秒数。
  • 我需要匹配 2013-08-11 16:18:02 但不需要考虑秒数。
  • 在您的回答中,您删除了不可能的秒数。我想匹配整个时间戳。
  • 好的,那么您的原始查询有什么问题呢?
  • @Manan 你说的 match 到底是什么意思。据我所知,这里给出的解决方案完全符合您的需要。
【解决方案2】:

如果您根本无法从日期时间字段中删除秒部分,请尝试以下操作:

UPDATE n2jm0_cronjob_run SET state=0 WHERE DATE_FORMAT(crondate ,'%Y-%m-%d %H:%i')=
DATE_FORMAT('2013-08-11 16:18:00','%Y-%m-%d %H:%i');

DATE_FORMAT('2013-08-11 16:18:00','%Y-%m-%d %H:%i') 将只匹配到分钟部分。

看到这个fiddle

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多