日期:2014-05-17  浏览次数:20503 次

简单问题 关于时间计算
Sqlserver2000中 

  declare  @dt  datetime
  declare  @dtStart  datetime
  declare  @dtEnd    datetime

  set @dt=getdate()
  -----------------------------
  获得当前时间后,比如为 2013-05-23 14:21:32
  如何计算是的 其他两个时间比变量值等于 ??
  @dtStart    =2013-05-23 14:00:00 (去掉本时间的分和秒)
  @dtEnd      =2013-05-23 15:00:00 (在本时间的值上小时+1)

------解决方案--------------------
  SET @dtStart=DATEADD(hh,DATEDIFF(hh,1,@dt),1)
  SET @dtEnd=DATEADD(hh,DATEDIFF(hh,1,@dt)+1,1)
  SELECT @dtStart,@dtEnd
------解决方案--------------------
SELECT CONVERT(VARCHAR(30),CONVERT(DATE,'2013-05-23 14:21:32'))+' '+SUBSTRING(CONVERT(VARCHAR(20),CONVERT(TIME,'2013-05-23 14:21:32')),1,2)+':00:00'
SELECT CONVERT(VARCHAR(30),CONVERT(DATE,'2013-05-23 14:21:32'))+' '+SUBSTRING(CONVERT(VARCHAR(20),DATEADD(hour,1,CONVERT(TIME,'2013-05-23 14:21:32'))),1,2)+':00:00'

/*
-----------------------------------------
2013-05-23 14:00:00

(1 行受影响)


-----------------------------------------
2013-05-23 15:00:00
*/