使表abc中的sktime字段,时间都加2小时如何操作,见图:

qq_29845565 2015-07-15 04:09:31
使表abc中的sktime字段,时间都加2小时,应该如何写SQL语句,谢谢!!
...全文
235 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_29845565 2015-07-17
  • 打赏
  • 举报
回复
好的,谢谢!!
qq_29845565 2015-07-16
  • 打赏
  • 举报
回复
知道了,多谢!!!
Tiger_Zhao 2015-07-16
  • 打赏
  • 举报
回复
1、数值用CONVERT转字符串是没有前缀0的。
2、%是取模运算啊。
3、数据要一致,怎么有冒出来一位小时的格式来?提问贴图中为什么没说明?
DECLARE @abc table(sktime char(5))

INSERT INTO @abc
SELECT '0:16' UNION ALL
SELECT '11:16' UNION ALL
SELECT '16:40' UNION ALL
SELECT '21:30' UNION ALL
SELECT '23:05'

UPDATE @abc
SET sktime = RIGHT('0'+CONVERT(varchar(2),
(CONVERT(int,
LEFT(sktime,CHARINDEX(':',sktime)-1)
)+2) % 24
),
2) + SUBSTRING(sktime,CHARINDEX(':',sktime),3)

SELECT * FROM @abc

sktime
------
02:16
13:16
18:40
23:30
01:05
qq_29845565 2015-07-16
  • 打赏
  • 举报
回复
3、查询时:select sktime = RIGHT('0'+CONVERT(varchar(2), (CONVERT(int, LEFT(sktime,2))+2) % 24),2) + RIGHT(sktime,3) from abc
提示:
qq_29845565 2015-07-16
  • 打赏
  • 举报
回复
多谢可以了,但是: 1、"RIGHT('0'+CONVERT(varchar(2)"中的0代表什么意思,没有可以吗? 2、%24是什么意思? 请说的详细一些,谢了!!
Tiger_Zhao 2015-07-16
  • 打赏
  • 举报
回复
DECLARE @table1 table(sktime char(5))

INSERT INTO @abc
SELECT '11:16' UNION ALL
SELECT '16:40' UNION ALL
SELECT '21:30' UNION ALL
SELECT '23:05'

UPDATE @abc
SET sktime = RIGHT('0'+CONVERT(varchar(2),
(CONVERT(int, LEFT(sktime,2))+2) % 24
),
2) + RIGHT(sktime,3)

SELECT * FROM @abc

sktime
------
13:16
18:40
23:30
01:05

如果允许超过 24:00,就不要 % 24 运算。
qq_29845565 2015-07-16
  • 打赏
  • 举报
回复
数据类型 :char(5)
qq_29845565 2015-07-16
  • 打赏
  • 举报
回复
sktime 数据类型是:char(),update语句是这么写的 :update abc set sktime=dateadd(hh,2,sktime) 结果sktime是01 1如上面图那样显示,应该怎么写?谢谢
Tiger_Zhao 2015-07-16
  • 打赏
  • 举报
回复
查询分析器里的显示没关系的。
前台程序把显示格式设置为 HH:mm 就行。
qq_29845565 2015-07-16
  • 打赏
  • 举报
回复
如果sktime类型是time型的,应该按照2楼的语句执行,但显示时如何去掉后面的几个0呢,让abc表中的 sktime字段,只显示11:16,而不是11:16:00多谢!!
唐诗三百首 2015-07-15
  • 打赏
  • 举报
回复
请问sktime字段的数据类型是什么?
qq_29845565 2015-07-15
  • 打赏
  • 举报
回复
我先查询了一下 select sktime=dateadd(hh,2,sktime) from abc 结果是这样:

然后我又update一下结果是这样:
这是为什么呢??
唐诗三百首 2015-07-15
  • 打赏
  • 举报
回复

create table abc(sktime time)

insert into abc(sktime)
 select '11:16' union all
 select '12:13' union all
 select '23:44'


select * from abc
/*
sktime
----------------
11:16:00.0000000
12:13:00.0000000
23:44:00.0000000

(3 row(s) affected)
*/

-- 时间加2小时
update abc set sktime=dateadd(hh,2,sktime)


select * from abc
/*
sktime
----------------
13:16:00.0000000
14:13:00.0000000
01:44:00.0000000

(3 row(s) affected)
*/

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧