SQL语句以查找日期是否介于两个日期之间
使用SQL语句,我想查找一天的条目 考虑以下条目:SQL语句以查找日期是否介于两个日期之间,sql,sql-server,tsql,date,where-clause,Sql,Sql Server,Tsql,Date,Where Clause,使用SQL语句,我想查找一天的条目 考虑以下条目: Id 1,开始于2020-04-12 08:00:00.0000000,结束于2020-04-12 15:00:00.0000000 Id 2,开始于2020-04-11 08:00:00.0000000,结束于2020-04-13 15:00:00.0000000 当我想查找当天的条目时: 2020-04-11,结果应该是:Id 2 2020-04-12,结果应该是:Id 1和Id 2 2020-04-13,结果应该是:Id 2 我尝
- Id 1,开始于2020-04-12 08:00:00.0000000,结束于2020-04-12 15:00:00.0000000
- Id 2,开始于2020-04-11 08:00:00.0000000,结束于2020-04-13 15:00:00.0000000
- 2020-04-11,结果应该是:Id 2
- 2020-04-12,结果应该是:Id 1和Id 2
- 2020-04-13,结果应该是:Id 2
select count(*)
from mytable
where
@mydate >= cast(startAt as date)
and @mydate < dateadd(day, 1, cast(endAt as date))
选择计数(*)
从mytable
哪里
@mydate>=强制转换(开始日期为日期)
和@mydate
-您可以使用@mydate
的值来测试这3种场景。请考虑:
select count(*)
from mytable
where
@mydate >= cast(startAt as date)
and @mydate < dateadd(day, 1, cast(endAt as date))
选择计数(*)
从mytable
哪里
@mydate>=强制转换(开始日期为日期)
和@mydate
-您可以使用@mydate
的值来测试这3种场景。我想您需要:
where @date <= endAt and
dateadd(day, 1, @date) > startat
其中@date startat
这将返回任何时间跨度,包括@日期的任何时间我想您需要:
where @date <= endAt and
dateadd(day, 1, @date) > startat
其中@date startat
这将返回任何时间跨度,包括@日期的任何时间
请使用您正在使用的数据库标记您的问题:sql server、mysql、oracle。。。?日期函数是高度特定于供应商的。当然,我添加了mssql数据库标记,我认为您的第一个结果是错误的;它应该是“2”而不是“1”。您的权利,在示例中更改了,请用您正在使用的数据库标记您的问题:sql server、mysql、oracle。。。?日期函数是高度特定于供应商的。当然,我添加了mssql数据库标记,我认为您的第一个结果是错误的;它应该是“2”而不是“1”。您的权利,在示例中更改了它