Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server按时间加一小时排序_Sql_Sql Server_Linq_Linq To Sql - Fatal编程技术网

SQL Server按时间加一小时排序

SQL Server按时间加一小时排序,sql,sql-server,linq,linq-to-sql,Sql,Sql Server,Linq,Linq To Sql,我有一个事件数据库,每个事件都有一个时间字段,需要从所说的时间开始按升序排序。这些活动从晚上11:00开始,每天24小时从晚上11:00到晚上10:59举行 是否有方法对我的事件进行排序,以便结果从11:00PM、11:01PM、…、11:59PM事件开始,然后继续12:00AM事件?如果可以在SQL和LINQtoSQL中提供示例,那就太好了 编辑:我应该解释我问题的标题。我最初的想法是在排序时每次只增加一个小时,但返回的值仍然是原始时间。这将导致所有11:00PM etc事件现在为12:00a

我有一个事件数据库,每个事件都有一个时间字段,需要从所说的时间开始按升序排序。这些活动从晚上11:00开始,每天24小时从晚上11:00到晚上10:59举行

是否有方法对我的事件进行排序,以便结果从11:00PM、11:01PM、…、11:59PM事件开始,然后继续12:00AM事件?如果可以在SQL和LINQtoSQL中提供示例,那就太好了


编辑:我应该解释我问题的标题。我最初的想法是在排序时每次只增加一个小时,但返回的值仍然是原始时间。这将导致所有11:00PM etc事件现在为12:00am etc事件,其他所有事件将提前一个小时,一天中最后10:59PM的事件现在将在11:59PM发生,以便进行排序。这可能吗?

对于给定的一组时间,按升序排序将产生与按升序排序时间+1小时相同的结果。至少在这种和其他简单的情况下,向每个值添加一个常量值时,值集合的顺序不会改变


您是否还需要按日期组件分组,或按日期提取?我觉得您的问题可能是如何在时间+1小时内分组或选择,而不是排序。

对于给定的时间集,按升序排序将产生与按升序排序时间+1小时相同的结果。至少在这种和其他简单的情况下,向每个值添加一个常量值时,值集合的顺序不会改变


您是否还需要按日期组件分组,或按日期提取?我觉得你的问题可能是如何在时间+1小时内分组或选择,而不是排序。

不确定这是否是最有效的方法,但我认为这正是你所要求的

declare @theDateYouAreInterestedIn smalldatetime
-- this gets today's date and subtracts an hour giving you 11:00pm yesterday
-- if you want it some other date just sub out the Cast(GetDate() as date) for the
-- desired date
set @theDateYouAreInterestedIn = Dateadd(hour, -1,Cast(Cast(GetDate() as date) as smalldatetime))
select *
from yourTable
where yourDateTimeField > @theDateYouAreInterestedIn 
and yourDateTimeField < Dateadd(day, 1,@theDateYouAreInterestedIn)
order by yourDateTimeField

不确定这是否是最有效的方法,但我认为这正是你所要求的

declare @theDateYouAreInterestedIn smalldatetime
-- this gets today's date and subtracts an hour giving you 11:00pm yesterday
-- if you want it some other date just sub out the Cast(GetDate() as date) for the
-- desired date
set @theDateYouAreInterestedIn = Dateadd(hour, -1,Cast(Cast(GetDate() as date) as smalldatetime))
select *
from yourTable
where yourDateTimeField > @theDateYouAreInterestedIn 
and yourDateTimeField < Dateadd(day, 1,@theDateYouAreInterestedIn)
order by yourDateTimeField

当您查询时,您是否只需要某一天的数据?是的。这些事件每天都在重复,因此只有一天真正在表中。一些琐事:在古代中国,晚上11点是午夜的开始,实际上,晚上11点-次日凌晨1点是第一个小时。每个古代中国小时对应2个西方小时。想知道你是否在用中国古代的计时法做什么吗?没有。对于这个项目,天只从晚上11点开始。当您查询时,您是否只需要某一天的数据?是的。这些事件每天都在重复,因此只有一天真正在表中。一些琐事:在古代中国,晚上11点是午夜的开始,实际上,晚上11点-次日凌晨1点是第一个小时。每个古代中国小时对应2个西方小时。想知道你是否在用中国古代的计时法做什么吗?没有。此项目的天从晚上11点开始。事件每天重复,因此数据库中只有一天的事件。事件每天重复,因此数据库中只有一天的事件。