使用LIKE的SELECT查询失败

时间:2019-06-24 12:23:33

标签: sql sql-server sql-server-2008 sql-like

我正在使用SQL SELECT查询来带回特定日期的所有行。

我正在使用的列称为TimeStamp(日期时间)

(来自此列的数据示例= 01/02/2018 07:55:55

我想要返回特定日期的所有行,例如24/06/2019

我尝试过

SELECT top 20 TimeStamp
from Report
where TimeStamp = '02/01/2018 07:55:55'

返回一行(这是正确的,因为只有一行包含此数据)

如果我再尝试

SELECT top 20 TimeStamp
from Report
where TimeStamp LIKE '02/01/2018%'

我没有结果,我也尝试过转义正斜杠

SELECT top 20 TimeStamp
from Report
where TimeStamp = '02\/01\/2018%'

4 个答案:

答案 0 :(得分:4)

大多数数据库支持名为left()的字符串函数。如果我假设您的“时间戳记”是字符串,则:

where left(timestamp, 10) = '01/02/2018'

但是,应将其存储为日期或日期/时间。如果是这样,那么您可以这样做:

where timestamp >= '2018-02-01' and
      timestamp < '2018-02-02'

请注意标准格式日期(YYYY-MM-DD)的使用。大多数数据库就是通过这种方式实现日期文字的。

在SQL Server中,您还可以使用:

where convert(date, timestamp) = '2018-02-01' 

此版本和先前版本都将在timestamp上使用索引,因此两者都是合理的解决方案。

答案 1 :(得分:1)

这应该有效

SELECT TimeStamp FROM report where convert(Date, TimeStamp) = '2019-06-24'

答案 2 :(得分:-1)

select timestamp from report where timestamp between '2019-06-24' and '2019-06-25'。这将为您提供2019-06-24 00:00:00到2019-06-25 00:00:00之间的所有内容,因此所有日期为2019-06-24的记录

答案 3 :(得分:-1)

将时间戳记值转换为日期。

SELECT TimeStamp 
FROM report 
WHERE CAST(TimeStamp AS DATE) = '2019-06-24'