我把excel格式檔案匯入到資料視窗后,用a13=datetime(dw_1.getitemdatetime(某列,某行)) 來提取轉換資料視窗里面的資料,a13已經定義為datetime了,但是運行時候,提示資料型別錯誤。
請問,我可以用字串型別提取出資料,但是如何轉成datetime呢?或者如何改造上面的陳述句,提取轉換可以一次完成呢?
uj5u.com熱心網友回復:
datetime(date('2009-12-1'),time('12:03:01')) 即可uj5u.com熱心網友回復:
不是的。字串本身就是“yyyy-mm-dd hh-mm-ss“的,是一體的,不是date和time兩個字串。怎么把這個字串轉成datetime型別呢??uj5u.com熱心網友回復:
仔細看看PB幫助,datetime不是轉換函式,是將date和time組合的uj5u.com熱心網友回復:
用excel匯入資料時,即使原文列是daatetime,匯入資料庫還是文本型別。所以a13定義成datetime是要出錯的。唯一的辦法就是1樓說的,先檢索出字串,再分別截取字串,再轉換成datetimeuj5u.com熱心網友回復:
把a13=datetime(dw_1.getitemdatetime(某列,某行))改為
string ls_data
long ll_pos
datetime ldt_data
ls_data = dw_1.getitemstring(某列,某行)
ll_pos = pos(ls_data, ' ')
ldt_data=https://bbs.csdn.net/topics/datetime(date(left(ls_data, ll_pos - 1)), time(mid(ls_data, ll_pos + 1)))
messagebox('', string(ldt_data, 'YYYY-MM-DD HH:MM:SS'))
即可
uj5u.com熱心網友回復:
"a13=datetime(dw_1.getitemdatetime(某列,某行))"
其中的dw_1.getitemdatetime(某列,某行)運行行時,
如果對應的(某列)是datetime型的.則該函式回傳的值也是datetime型的,不需要轉換了.
如果對應的(某列)是非datetime型(如果它的值看上去像datetime型,那它應該是string型的)的,則需要用5樓 lzp_lrp 老大的方法執行.
當然,如果是看上去像符合 datetime 型的string 資料用如下方法也是可行的:
datetime(blob('2008-01-01 11:00:01'))
uj5u.com熱心網友回復:
string vday='01',vmonth='01',vyear='1900',vhour='00',vminute='00',vapm='上午',vstrstring vtmp
datetime vreturn
date vdate
time vtime
long vpos
// 28/三月/08 02:12 下午
setnull(vreturn)
if isnull(value) then return vreturn
if value='' then return to_date(vyear,vmonth,vday,vhour,vminute,vapm)
vstr=value
vpos=posw(vstr,'/')
if vpos<1 then
vday=vstr
return to_date(vyear,vmonth,vday,vhour,vminute,vapm)
end if
vtmp=leftw(vstr,vpos - 1)
if vtmp='' then return to_date(vyear,vmonth,vday,vhour,vminute,vapm)
vday=vtmp
vstr=midw(vstr,vpos+1,lenw(vstr)-vpos)
if vstr='' then return to_date(vyear,vmonth,vday,vhour,vminute,vapm)
vpos=posw(vstr,'/')
if vpos<1 then
vmonth=get_month(vstr)
return to_date(vyear,vmonth,vday,vhour,vminute,vapm)
end if
vtmp=leftw(vstr,vpos - 1)
if vtmp='' then return to_date(vyear,vmonth,vday,vhour,vminute,vapm)
vmonth=get_month(vtmp)
vstr=midw(vstr,vpos+1,lenw(vstr)-vpos)
if vstr='' then return to_date(vyear,vmonth,vday,vhour,vminute,vapm)
vpos=posw(vstr,' ')
if vpos<1 then
vyear='20'+vstr
return to_date(vyear,vmonth,vday,vhour,vminute,vapm)
end if
vtmp=leftw(vstr,vpos - 1)
if vtmp='' then return to_date(vyear,vmonth,vday,vhour,vminute,vapm)
vyear='20'+vtmp
vstr=midw(vstr,vpos+1,lenw(vstr)-vpos)
if vstr='' then return to_date(vyear,vmonth,vday,vhour,vminute,vapm)
vpos=posw(vstr,':')
if vpos<1 then
vhour=vstr
return to_date(vyear,vmonth,vday,vhour,vminute,vapm)
end if
vtmp=leftw(vstr,vpos - 1)
if vtmp='' then return to_date(vyear,vmonth,vday,vhour,vminute,vapm)
vhour=vtmp
vstr=midw(vstr,vpos+1,lenw(vstr)-vpos)
if vstr='' then return to_date(vyear,vmonth,vday,vhour,vminute,vapm)
vpos=posw(vstr,' ')
if vpos<1 then
vminute=vstr
return to_date(vyear,vmonth,vday,vhour,vminute,vapm)
end if
vtmp=leftw(vstr,vpos - 1)
if vtmp='' then return to_date(vyear,vmonth,vday,vhour,vminute,vapm)
vminute=vtmp
vstr=midw(vstr,vpos+1,lenw(vstr)-vpos)
if vstr='' then return to_date(vyear,vmonth,vday,vhour,vminute,vapm)
vapm=vstr
return to_date(vyear,vmonth,vday,vhour,vminute,vapm)
uj5u.com熱心網友回復:
1、首先要用dw_1.getitemdatetime(某列,某行)這個函式,就必須用在資料型別是datetime的欄位上,否則必然報錯2、如果該欄位是datetime型,那么可以直接這樣 a13=dw_1.getitemdatetime(某列,某行),不必做轉換,因為函式回傳datetime
3、既然已經提示資料型別錯誤,那么肯定是欄位型別為string,正常情況可以這樣a13=datetime(dw_1.getitemstring(某列,某行)) ,如果仍然報錯,那么字串不符合datatime型。比如你給出的“yyyy-mm-dd hh-mm-ss“一定是不行,要是“yyyy-mm-dd hh:mm:ss:fff”這樣肯定沒有問題。
4、其他,參見樓上幾位的
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/96435.html
標籤:腳本語言
