将日期型date 或datetime 转换成长整形 long

vondon 2005-06-08 03:59:57
需要将日期型date 或datetime 转换成长整形 long(15)
结果应该像这样“001117443507843”
...全文
2392 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
vondon 2005-06-28
  • 打赏
  • 举报
回复
long(string(today(),'yyyymmdd')+string(now(),'hhmmss'))
可以转换,这个只可用pb一种工具开发,同时不知道有没有还原的办法


001117443507843是delphi中的long()方法转换的,delphi的数据类型实在是太多了,
java同样也有这个方法,而且还类型一致,可以和string类型一样使用
pb就不一样了,long转换的就是数值型了。
我自己找了一个基准日期,查看了它在delphi中转换后的值,把前面的零去掉。
再作试验发现相差一天就加63076140,结果呢还和java,delphi转换的一致,而且还可以还原
反正我现在也不用读这个日期,需要读也可以用同样的办法还原。到现在还没有出过错。


return
string
pass by
date,integer

int li_countday,li_count,li_no
string ls_today

double lr_tradecost

li_countday = DaysAfter(2005-06-08,ld_day)
ls_today = "1118239010781----2005-06-08"
lr_tradecost = Double(string("1118239010781"))
lr_tradecost = double(li_countday * 63076140 + lr_tradecost)
li_count = len(string(lr_tradecost))
ls_today = string(lr_tradecost)
if li_len <= 12 then
messagebox("错误提示","您输入的长度参数小于最小值13")
return ls_today
else
if li_count <= li_len then
li_no = li_len - li_count
ls_today = Fill ( '0', li_no )+ls_today
end if
return ls_today
end if

j9dai 2005-06-10
  • 打赏
  • 举报
回复
001117443507843是怎么算来的?

龙行天下的long(string(today(),'yyyymmdd')+string(time(),'hhmmsss'))
可以换成Long
爱就爱乐 2005-06-09
  • 打赏
  • 举报
回复
dw_msgsend.setitem(dw_msgsend.getrow( ) ,"creationdate",'001117466619656')
//更新不成功ls_today这里的ls_today就是需要转的变量。
//如果我直接写成'001117466619656'是可以插入数据库中的

这明明是一个字符串呀,怎么你又要转换为长整形呢???也不匹配呀!!!
convert函数是sybase的一个函数,在oracle里面当然不行了,但是人家写的是没有错的。
gjz_1209 2005-06-09
  • 打赏
  • 举报
回复
long(string(today(),'yyyymmdd')+string(time(),'hhmmsss'))
vondon 2005-06-09
  • 打赏
  • 举报
回复
不能利用string中间类型转,结果肯定是一个0,
当数据窗口update()的时候
提示
“不能把‘NULL’值插入表中”
vondon 2005-06-09
  • 打赏
  • 举报
回复
zxjnew(重新启动) 的sql语句在oracle中执行不成功。
我用的oracle 数据库,但是这个转化是需要在pb的程序编写时转化
dw_msgsend.setitem(dw_msgsend.getrow( ) ,"username",ls_order)
dw_msgsend.setitem(dw_msgsend.getrow( ) ,"messageid",integer(ls_messageid))
dw_msgsend.setitem(dw_msgsend.getrow( ) ,"creationdate",'001117466619656')
//更新不成功ls_today这里的ls_today就是需要转的变量。
//如果我直接写成'001117466619656'是可以插入数据库中的
dw_msgsend.setitem(dw_msgsend.getrow( ) ,"messagesize",len(ls_vcomment))
dw_msgsend.setitem(dw_msgsend.getrow( ) ,"message",ls_vcomment)
在java中是很好转的,就是long()过程就可以了。
vondon 2005-06-09
  • 打赏
  • 举报
回复
001117443507843 是一个字符串,换成串以后做好做索引啊,
luotitan 2005-06-08
  • 打赏
  • 举报
回复
001117443507843 只可能是个字符串。
li_d_s 2005-06-08
  • 打赏
  • 举报
回复
这个转换应该是有个算法的吧?要不转成秒,毫秒或者相对那个什么GMT标准时间的差值看看?
zxjnew 2005-06-08
  • 打赏
  • 举报
回复
select convert(numeric(10),convert(varchar(10),datetime,112)),convert(numeric(15,0),datetime) from 表
试试是你想要的吗???
princelily 2005-06-08
  • 打赏
  • 举报
回复
怎么想起把datetime类型的数据转换成long数字类型啊?很奇怪啊,没有见过这么做的,试试中间转换把,用string字符串类型为中间变量。嘿嘿
herrick 2005-06-08
  • 打赏
  • 举报
回复
先转换成字符型再转long

1,079

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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