时间类型字段更新

lchh0917 2011-06-10 02:29:47
哪位大侠帮忙看看,
表jobhis

sp_help jobhis

jobid char 8
dt_plan datetime 8
dt_exec datetime 8

select * from jobhis

jobid dt_plan dt_exec
20110103 2011-01-03 00:00:00.0 2011-01-04 09:17:29.0
20110105 2011-01-05 00:00:00.0 2011-01-07 09:04:49.0
20110110 2011-01-10 00:00:00.0 2011-01-20 08:50:54.0
20110112 2011-01-12 00:00:00.0 2011-01-20 08:50:15.0
...
...

我想更新dt_exec字段为dt_plan相同日期,时分秒保持不变
更新后预计结果为
jobid dt_plan dt_exec
20110103 2011-01-03 00:00:00.0 2011-01-03 09:17:29.0
20110105 2011-01-05 00:00:00.0 2011-01-05 09:04:49.0
20110110 2011-01-10 00:00:00.0 2011-01-10 08:50:54.0
20110112 2011-01-12 00:00:00.0 2011-01-12 08:50:15.0
...
...

或者更新dt_exec为dt_plan相同日期内的任一时间点也可以,不知道有没有这个随机函数。
...全文
74 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lchh0917 2011-06-11
  • 打赏
  • 举报
回复
结贴了,再次谢谢wwwwb
wwwwb 2011-06-10
  • 打赏
  • 举报
回复
能获取dt_plan相同日期内的任一时间点吗,
举例说明,取时间?

不知道有没有这个随机函数
当然有,参考RAND函数

返回0 和1 之间的随机值,该值是使用指定的源值来生成的。语法rand([integer])参数integer是任意整数 (tinyint、smallint或int)列名、变量、常量表达式或上述数据类型的组合形式。示例示例1
select rand()--------------------0.395740
示例2 declare @seed intselect @seed=100select rand(@seed)-------------------- 0.000783
用法
rand是一个数学函数,它使用可选整数作为源值,返回0 和1 之间的随机浮动值。rand函数使用32 位伪随机整数发生器的输出。该整数最多可除以32 位整数,得出0.0 到1.0 之间的双精度值。服务器启动时将随机产生rand函数的源值,所以不可能得到同一随机数字序列,除非用户先用常量源值对该函数进行初始化。rand函数是全局资源。如果有多个用户调用rand函数,则按单一伪随机值流依次进行。如果需要一系列可重复的随机数字,用户必须确保函数起初的源值相同,而且还要确保当需要重复序列时,没有其他用户调用rand。有关数学函数的一般一 ,请参见第61 页的 "数学函数"。标准符合ANSI SQL 的级别:Transact-SQL 扩展。权限任何用户都可以执行rand。
lchh0917 2011-06-10
  • 打赏
  • 举报
回复
能获取dt_plan相同日期内的任一时间点吗,不知道有没有这个随机函数

比如像在oracle中就有这种
UPDATE GOVENTFAULTHANDLING2
SET FIRSTRESPONSETIME = DECLAREDTIME + DBMS_RANDOM.VALUE * 30 / 1440 --更新为30分钟内
wwwwb 2011-06-10
  • 打赏
  • 举报
回复
这里是通过cast显示转换成datetime嚒?
对,将转换后的字符串连接后转换成datetime型,因为你的字段是datetime
lchh0917 2011-06-10
  • 打赏
  • 举报
回复
select cast(convert(char(10),dt_plan,102)+' '+ convert(char(10),dt_exec,108) as DATETIME) from jobhis


感激啊!wwwwb
不过好像没有对应的120,我用的是102
还有就是对 as DATETIME有点不很明白,这里是通过cast显示转换成datetime嚒?要怎么理解?
wwwwb 2011-06-10
  • 打赏
  • 举报
回复
select cast(convert(char(10),dt_plan,120)+' '+ convert(char(10),dt_exec,108) as DATETIME)
lchh0917 2011-06-10
  • 打赏
  • 举报
回复
ASE的,要怎么作,应该差不多吧
wwwwb 2011-06-10
  • 打赏
  • 举报
回复
是ASA还是ASE?
ASA:
CAST(
dateformat(dt_plan,'yyyy-mm-dd')+' '+dateformat(dt_exec ,'hh:mm:ss') AS DATETIME)

2,596

社区成员

发帖
与我相关
我的任务
社区描述
Sybase相关技术讨论区
社区管理员
  • Sybase社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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