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

qq_29845565 2015-08-10 04:08:00
使表abc中的sktime字段,时间都减2小时,sktime 为char(5) 类型,应该如何写SQL语句,主要问题是:sktime为00:33的减2小时,如果变成22:33 呢,谢谢!!
...全文
171 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_29845565 2015-08-11
  • 打赏
  • 举报
回复
上次的答案见图,小时数向上加可以,但小时数往下减就不对了,这次的答案都可以,多谢了,
qq_29845565 2015-08-11
  • 打赏
  • 举报
回复
再问一下:你上面写的 INSERT INTO ABC SELECT '012306',10,'17:17','00' UNION ALL SELECT '012306',10,'00:33','00' UNION ALL SELECT '012306',10,'17:07','00' UNION ALL SELECT '012306',10,'07:12','00' 是什么意思呀,我不太懂,我一般写成 insert into abc values ('012306','05','17:17'),看你们都像你那样写,能告诉我一下是什么意思吗?请说的详细些,谢了。
qq_29845565 2015-08-11
  • 打赏
  • 举报
回复
引用 9 楼 yangb0803 的回复:
[quote=引用 8 楼 Tiger_Zhao 的回复:] 使表abc中的sktime字段,时间都加2小时如何操作,见图 同一个账号,一模一样的提问。 不会这么健忘吧?
额, 你记性真好, 看了下, 貌似都还没结贴...[/quote] 对上次是加2小时,这次问的是减2小时。00:33加知道怎么操作了,可以减2小时如何为22:33不知道,现在知道了,多谢以上各位。
道玄希言 2015-08-10
  • 打赏
  • 举报
回复
引用 8 楼 Tiger_Zhao 的回复:
使表abc中的sktime字段,时间都加2小时如何操作,见图 同一个账号,一模一样的提问。 不会这么健忘吧?
额, 你记性真好, 看了下, 貌似都还没结贴...
Tiger_Zhao 2015-08-10
  • 打赏
  • 举报
回复
使表abc中的sktime字段,时间都加2小时如何操作,见图
同一个账号,一模一样的提问。
不会这么健忘吧?
qq_29845565 2015-08-10
  • 打赏
  • 举报
回复
引用 6 楼 Cherise_huang 的回复:
从左边截取五个字符就好了

 update abc
 set sktime = left(convert(char(5), dateadd(hour, -2, convert(time, sktime, 120))),5)
这个对了,谢谢!! 再问一下:你上面写的 INSERT INTO ABC SELECT '012306',10,'17:17','00' UNION ALL SELECT '012306',10,'00:33','00' UNION ALL SELECT '012306',10,'17:07','00' UNION ALL SELECT '012306',10,'07:12','00' 是什么意思呀,我不太懂,我一般写成 insert into abc values ('012306','05','17:17'),看你们都像你那样写,能告诉我一下是什么意思吗?请说的详细些,谢了。
Cherise_huang 2015-08-10
  • 打赏
  • 举报
回复
从左边截取五个字符就好了

 update abc
 set sktime = left(convert(char(5), dateadd(hour, -2, convert(time, sktime, 120))),5)
qq_29845565 2015-08-10
  • 打赏
  • 举报
回复
引用 3 楼 Cherise_huang 的回复:

CREATE TABLE ABC
(
[card] VARCHAR(20),
rq INT ,
sktime CHAR(5),
[no] VARCHAR(20)
)

INSERT INTO ABC
SELECT '012306',10,'17:17','00' UNION ALL
SELECT '012306',10,'00:33','00' UNION ALL
SELECT '012306',10,'17:07','00' UNION ALL
SELECT '012306',10,'07:12','00'

ALTER TABLE ABC ALTER COLUMN sktime DATETIME

UPDATE ABC SET sktime=convert(char(5),RIGHT(DATEADD(HOUR,-2,sktime),LEN(sktime)-10),8)


提示这个见图:
qq_29845565 2015-08-10
  • 打赏
  • 举报
回复
引用 1 楼 yangb0803 的回复:

-- 查询语句
select sktime,
dateadd(hour, -2, convert(time, sktime, 120)) from abc

-- 更新语句
update abc
set sktime = convert(char(5), dateadd(hour, -2, convert(time, sktime, 120)))



sktime的类型是定义好的,只能是char(5),执行后是这样(见图),怎么能让执行完只是类似于 22:33没有后面多余的内容呢?
Cherise_huang 2015-08-10
  • 打赏
  • 举报
回复

CREATE  TABLE ABC
(
 [card] VARCHAR(20),
 rq    INT ,
 sktime CHAR(5),
 [no]  VARCHAR(20) 	
)

INSERT INTO ABC
SELECT '012306',10,'17:17','00' UNION ALL 
SELECT '012306',10,'00:33','00' UNION ALL 
SELECT '012306',10,'17:07','00' UNION ALL 
SELECT '012306',10,'07:12','00' 

ALTER TABLE ABC ALTER COLUMN sktime DATETIME

UPDATE ABC SET sktime=convert(char(5),RIGHT(DATEADD(HOUR,-2,sktime),LEN(sktime)-10),8)
道玄希言 2015-08-10
  • 打赏
  • 举报
回复
sktime 建议使用 time 类型字段,不建议用char 类型。
道玄希言 2015-08-10
  • 打赏
  • 举报
回复

 -- 查询语句
 select sktime,
 dateadd(hour, -2, convert(time, sktime, 120)) from abc

 -- 更新语句
 update abc
 set sktime = convert(char(5), dateadd(hour, -2, convert(time, sktime, 120)))

22,301

社区成员

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

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