在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语句知道Time
和DateAdd
的下一个值?
如果日期是2014-06-01,时间是23:00,那么下一个日期仍然是2014-06-01。下次是00:00
如果日期是2014-06-01,时间是00:00,那么下一个日期是2014-06-02。下一次是00:00
请咨询。
非常感谢你。
此致
答案 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