DATEADD SQL 2008下次和下一个日期

时间:2014-06-20 03:32:00

标签: sql sql-server sql-server-2008

在sql 2008的select语句中需要帮助。
以下是我的表:

ID Date                Time     Value
1  2014-01-01 00:00:00 00:00:00 A
2  2014-01-01 00:00:00 01:00:00 B
3  2014-01-01 00:00:00 02:00:00 C
4  2014-01-01 00:00:00 03:00:00 D
5  2014-01-01 00:00:00 04:00:00 E
  --- ff. ---
23 2014-01-01 00:00:00 23:00:00 Y
24 2014-01-01 00:00:00 00:00:00 Z
25 2014-01-02 00:00:00 00:00:00 AA
26 2014-01-02 00:00:00 01:00:00 AB
27 2014-01-02 00:00:00 02:00:00 AC

问题是,如何在SQL 2008中使用带Date函数的Select语句知道TimeDateAdd的下一个值?

如果日期是2014-06-01,时间是23:00,那么下一个日期仍然是2014-06-01。下次是00:00

如果日期是2014-06-01,时间是00:00,那么下一个日期是2014-06-02。下一次是00:00

请咨询。
非常感谢你。

此致

2 个答案:

答案 0 :(得分:2)

试试这个,它适用于sql-server 2008 +:

SELECT 
  id, 
  date, 
  time, 
  value, 
  CAST(DATEADD(hh, 1, date + time) as DATE) extdate, 
  CAST(DATEADD(hh, 1, date + time) as time(0)) nextTime 
FROM yourtable

答案 1 :(得分:1)

id = 24的行是错误的,对于其余的行,只需实现每行的下一个值:

select id, date, time, value, 
    cast(floor(cast(DateAdd(hour, 1, date + time) as float)) as datetime) as nextdate, 
    convert(time, DateAdd(hour, 1, date + time), 108) as nextTime 
    from tableName