【问题标题】:How to use - within like '%'% query如何使用 - 在like '%'% 查询中
【发布时间】:2017-05-24 14:00:29
【问题描述】:

我在 SQL 2012 中有一个名为 transitiontime 的表列,其中包含格式为 2017-02-02 21:00:34.847 的日期和时间。我正在尝试查询过去 3 个月内的所有结果,我认为这只需要我寻找 2017-02 或类似的东西。但是,如果我留下连字符,查询将失败。

例子:

WHERE transitiontime like '%2017%' <- works but returns all values from this year

WHERE transitiontime like '%2017-02%' <- Does not work at all

WHERE transitiontime like '%2017%02%' <- Works but pulls in anything with 2017 and 02 in it, even if 02 is just in the time. 

我很想在一个查询中获得过去 3 个月的数据,但现在我只想从 1 个月中提取数据。

【问题讨论】:

  • transitiontime 列的数据类型是什么?
  • 你的数据不是你想象的那样。连字符不是 LIKE 的特殊字符。如果可以的话,发布一个重现问题的脚本。否则这个“问题”不存在。
  • 你说它根本不起作用是什么意思?它是否返回错误,是否返回不正确的数据等?
  • transitiontime列的数据类型为datetime。
  • 不确定如何发布脚本。您是指完整的查询吗?

标签: sql-server date where wildcard sql-like


【解决方案1】:

我假设,因为您使用关键字“like”,所以字段“transitiontime”是一个 char oder varchar 字段?

将字段的类型更改为 DateTime 并使用以下查询,以获取最近三个月的所有结果(适用于 SQL):

SELECT * FROM table WHERE transitiontime >= DATEADD(month, -3, GETDATE())

【讨论】:

  • 谢谢,这正是我所需要的。它奏效了。
猜你喜欢
  • 1970-01-01
  • 2012-06-08
  • 1970-01-01
  • 2011-03-19
  • 1970-01-01
  • 2020-02-05
  • 2012-06-12
  • 2020-12-10
  • 1970-01-01
相关资源
最近更新 更多