SELECT LIKE 查询失败
SELECT query with LIKE fails
我正在使用 SQL SELECT 查询来恢复特定日期的所有行。
我正在使用的列名为 TimeStamp
(日期时间)
(来自该列的数据示例 = 01/02/2018 07:55:55
)
我想要的是 return 特定日期的所有行,例如 24/06/2019
我试过了
SELECT top 20 TimeStamp
from Report
where TimeStamp = '02/01/2018 07:55:55'
其中 return 一行(这是正确的,因为只有一行包含此数据)
如果我再尝试
SELECT top 20 TimeStamp
from Report
where TimeStamp LIKE '02/01/2018%'
我没有得到任何结果,我也试过转义正斜杠
SELECT top 20 TimeStamp
from Report
where TimeStamp = '02\/01\/2018%'
大多数数据库支持名为 left()
的字符串函数。如果我假设你的 "timestamp" 是一个字符串,那么:
where left(timestamp, 10) = '01/02/2018'
但是,它应该存储为日期或 date/time。如果是这样,那么您可以这样做:
where timestamp >= '2018-02-01' and
timestamp < '2018-02-02'
注意标准格式日期的使用 (YYYY-MM-DD)。这是大多数数据库实现日期文字的方式。
在SQL服务器中,您还可以使用:
where convert(date, timestamp) = '2018-02-01'
这个版本和之前的版本都会在 timestamp
上使用索引,所以都是合理的解决方案。
这应该有效
SELECT TimeStamp FROM report where convert(Date, TimeStamp) = '2019-06-24'
或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
的记录
将时间戳值转换为日期。
SELECT TimeStamp
FROM report
WHERE CAST(TimeStamp AS DATE) = '2019-06-24'
我正在使用 SQL SELECT 查询来恢复特定日期的所有行。
我正在使用的列名为 TimeStamp
(日期时间)
(来自该列的数据示例 = 01/02/2018 07:55:55
)
我想要的是 return 特定日期的所有行,例如 24/06/2019
我试过了
SELECT top 20 TimeStamp
from Report
where TimeStamp = '02/01/2018 07:55:55'
其中 return 一行(这是正确的,因为只有一行包含此数据)
如果我再尝试
SELECT top 20 TimeStamp
from Report
where TimeStamp LIKE '02/01/2018%'
我没有得到任何结果,我也试过转义正斜杠
SELECT top 20 TimeStamp
from Report
where TimeStamp = '02\/01\/2018%'
大多数数据库支持名为 left()
的字符串函数。如果我假设你的 "timestamp" 是一个字符串,那么:
where left(timestamp, 10) = '01/02/2018'
但是,它应该存储为日期或 date/time。如果是这样,那么您可以这样做:
where timestamp >= '2018-02-01' and
timestamp < '2018-02-02'
注意标准格式日期的使用 (YYYY-MM-DD)。这是大多数数据库实现日期文字的方式。
在SQL服务器中,您还可以使用:
where convert(date, timestamp) = '2018-02-01'
这个版本和之前的版本都会在 timestamp
上使用索引,所以都是合理的解决方案。
这应该有效
SELECT TimeStamp FROM report where convert(Date, TimeStamp) = '2019-06-24'
或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
将时间戳值转换为日期。
SELECT TimeStamp
FROM report
WHERE CAST(TimeStamp AS DATE) = '2019-06-24'