查询SQL Server从上一日期的特定时间到当前日期的特定时间
对不起,我的问题是noobsql。我在SQL中有一个带有DateTime列的表。我需要每天运行一个脚本来显示从昨天上午8点到今天上午8点的所有行。例如,今天我要跑:查询SQL Server从上一日期的特定时间到当前日期的特定时间,sql,sql-server,datetime,date-arithmetic,Sql,Sql Server,Datetime,Date Arithmetic,对不起,我的问题是noobsql。我在SQL中有一个带有DateTime列的表。我需要每天运行一个脚本来显示从昨天上午8点到今天上午8点的所有行。例如,今天我要跑: select * from Table Where DateTime > '2020-12-30 08:00:00.000' and DateTime < '2020-12-31 08:00:00.000' 选择* 从桌子上 其中DateTime>'2020-12-30 08:00:00.000'和DateTime=D
select *
from Table
Where DateTime > '2020-12-30 08:00:00.000' and DateTime < '2020-12-31 08:00:00.000'
选择*
从桌子上
其中DateTime>'2020-12-30 08:00:00.000'和DateTime<'2020-12-31 08:00:00.000'
我也知道我可以运行此功能,但这只会给我前一天到当前时间:
select *
from Table
Where DateTime >= DATEADD(day,-1, GETDATE()) and DateTime < GETDATE())
选择*
从桌子上
其中DateTime>=DATEADD(day,-1,GETDATE())和DateTime
但是,有没有办法创建脚本,这样我就可以从昨天上午8点到今天上午8点,而无需每天手动编辑脚本?我建议:
select *
from mytable
where
datetime >= dateadd(hour, 8, dateadd(day, -1, convert(datetime, convert(date, getdate()))))
and datetime < dateadd(hour, 8, convert(datetime, convert(date, getdate()))))
选择*
从mytable
哪里
datetime>=dateadd(小时,8,dateadd(天,-1,转换(datetime,转换(日期,getdate()))
和datetime
我建议:
select *
from mytable
where
datetime >= dateadd(hour, 8, dateadd(day, -1, convert(datetime, convert(date, getdate()))))
and datetime < dateadd(hour, 8, convert(datetime, convert(date, getdate()))))
选择*
从mytable
哪里
datetime>=dateadd(小时,8,dateadd(天,-1,转换(datetime,转换(日期,getdate()))
和datetime
您可以将getdate()
转换为date
并返回到datetime
将其截断为今天的00:00:00。然后使用dateadd()
,但使用小时-昨天08:00:00为16,今天08:00为+8
SELECT *
FROM elbat
WHERE nmuloc >= dateadd(hour, -16, convert(datetime, convert(date, getdate())))
AND nmuloc < dateadd(hour, 8, convert(datetime, convert(date, getdate())));
选择*
来自厄尔巴特
其中nmuloc>=dateadd(小时,-16,转换(datetime,转换(date,getdate()))
和nmuloc
您可以将getdate()
转换为date
并返回到datetime
将其截断为今天的00:00:00。然后使用dateadd()
,但使用小时-昨天08:00:00为16,今天08:00为+8
SELECT *
FROM elbat
WHERE nmuloc >= dateadd(hour, -16, convert(datetime, convert(date, getdate())))
AND nmuloc < dateadd(hour, 8, convert(datetime, convert(date, getdate())));
选择*
来自厄尔巴特
其中nmuloc>=dateadd(小时,-16,转换(datetime,转换(date,getdate()))
和nmuloc
至少不会抛出错误。。。但它不会返回任何结果。编辑:第一个1必须是-1。我想这正是我想要的!谢谢@克里斯托弗:我刚刚解决了算术中的一个问题。它现在应该可以按要求工作了。那一个至少不会抛出错误。。。但它不会返回任何结果。编辑:第一个1必须是-1。我想这正是我想要的!谢谢@克里斯托弗:我刚刚解决了算术中的一个问题。现在应该可以按要求工作了。