3个回答
展开全部
敲入:1234567select top 1* from tablewhere FinishTime>'2016-01-01 08:00:00.000'order by FinishTimeunion allselect top 1* from tablewhere FinishTime<'2016-01-01 08:00:00.000'order by FinishTime desc
时间节点是一个很抽象和应用很广泛的概念,通俗的说就是某个大环境中的一个点或者一段,好比公交车线路中的一个站台。比如在工期计划,或者工派喊作计划等里面体现较多。 以工期计划为例,时间节点可以代表工程的某个阶段或者某个里兆陆程碑的点,而此阶段或这个里程碑之前的工作需要在某个时间之前完成,这就是工程中经常提到的时间节点。 其他行业也是一样的,譬如某软件的开发工作需要在某时完成,调试工作某时完成,销售推广某时完成等,都是时间节点尘猜野。
展开全部
暂液培时没厅肆想到特别好的方法,只能用笨方法闹伏唯写,不然只能写个游标。时间是个复杂的东西,不要把时间想的太简单:
select top 1* from table
where FinishTime>'2016-01-01 08:00:00.000'
order by FinishTime
union all
select top 1* from table
where FinishTime<'2016-01-01 08:00:00.000'
order by FinishTime desc
追问
那如果这个8:40是每天的呢? 例如按照一个时间段查询如:2015-10-1号之2015-10-8 号
就是说:查询2015-10-1号到2015-10-8 号这段时间内所有的8:40分前后的两条数据。
追答
那么你需要使用存储过程,写一个循环来实现。变量输入一个开始日期和结束日期,然后在存储过程里面拼凑出一个时间来。然后在循环内进行判定。如果你设定的高级一点,那么可以多几个变量,比如第一个变量是开始时间,第二个变量为结束时间,最后一个变量为时分秒。然后在存储过程中进行变量拼凑成时间,然后用while循环去比较,返回结果即可。因为时间是个可变的变量,那么整个SQL就是个动态的SQL了,并不是静态的SQL了。如果你的时分秒是死的,那么你只要开始时间和结束时间,其余的在存储过程中写死就行了。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select * from tableName
where 旁游
FinishTime=(select MAX(FinishTime) from tableName where FinishTime<='2016-01-01 08:40')
or
FinishTime=(select Min(FinishTime) 激笑from tableName where FinishTime>'2016-01-01 运铅销08:40')
追问
那如果这个8:40是每天的呢? 例如按照一个时间段查询如:2015-10-1号之2015-10-8 号
就是说:查询2015-10-1号到2015-10-8 号这段时间内所有的8:40分前后的两条数据。
追答
select * from tableName
where
(FinishTime in(select MAX(FinishTime) from tableName
where FinishTime<=left(FinishTime,10)+' 08:40' group by left(FinishTime,10))
or
FinishTime in(select Min(FinishTime) from tableName
where FinishTime>left(FinishTime,10)+' 08:40' group by left(FinishTime,10))
) and (FinishTime between '2015-10-1' and '2015-10-8')
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询