Sql 检查特定时间范围内的时间
我想用Sql 检查特定时间范围内的时间,sql,sql-server,tsql,date,time,Sql,Sql Server,Tsql,Date,Time,我想用案例陈述对时间格式做出决定。但无法使用时间格式做出正确的决定,因为我的时间范围的结束时间小于开始时间。让我用代码来解释 DECLARE @Startdate datetime DECLARE @START_TIME time(0) DECLARE @END_TIME time(0) SET @Startdate='2020-04-15 16:00:00.000' SET @START_TIME='15:30:00' SET @END_TIME='01:29:59' select CA
案例陈述
对时间
格式做出决定。但无法使用时间
格式做出正确的决定,因为我的时间范围的结束时间小于开始时间。让我用代码来解释
DECLARE @Startdate datetime
DECLARE @START_TIME time(0)
DECLARE @END_TIME time(0)
SET @Startdate='2020-04-15 16:00:00.000'
SET @START_TIME='15:30:00'
SET @END_TIME='01:29:59'
select
CASE WHEN CAST(@Startdate as time(0)) between @START_TIME and @END_TIME THEN 1 ELSE 0 END
我也有DB中的表,如下所示
ID START_TIME END_TIME
1 05:30:00 15:29:59
2 15:30:00 01:29:59
我只想检查一下到达时间datetime
值是否与ID
完全匹配。我不在乎约会的部分。我怎样才能做到这一点
提前感谢。一种方法是:
select case
when
(
@end_time >= @start_time
and cast(@startdate as time(0)) >= @start_time
and cast(@startdate as time(0)) <= @end_time
)
or (
@end_time < @start_time
and (
cast(@startdate as time(0)) >= @start_time
or cast(@startdate as time(0)) <= @end_time
)
)
then 1
else 0
end
选择案例
什么时候
(
@结束时间>=@开始时间
并施放(@startdate作为时间(0))>=@start\u时间
并施放(@startdate作为时间(0))=@start\u时间
或cast(@startdate as time(0))您的SQL数据库是什么(例如MySQL、SQL Server、Oracle等)?Microsoft SQL Server@Startdate='2020-04-15 13:00:00.000'
和@Startdate='2020-04-15 16:00:00.000'
两次都返回1。但是13:00:00应该返回0。@Lacrymae:是的,这是正确的。我对查询做了一些修改,现在似乎产生了正确的结果。