我正在使用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%'
答案 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'