你可能需要先定义systemtime 这个structure, 因为PB本身是没有这种类型的
以下是例子
Structure: (SystemTime)
uint year, uint month, uint dayofweek, uint day, uint hour, uint minute, uint second, uint millisecond
数据窗口名 dw_a
数据窗口列名 a_date
筛选语句应为
如取时间类型:
datetime Ldt_date
Ldt_date=dw_aobjecta_date[行号]
如取字符类型:
string Ls_date
Ls_date="2013/12/24"或者Ls_date=string(date(Ldt_date),'yyyy/mm/dd')
dw_asetfilter("a_date>'"+Ls_date+"'")
dw_afilter()
RelativeDate()
功能得到指定日期前多少天或后多少天的日期。
语法RelativeDate(date,n)
参数date:Date类型,指定基准日期n:integer类型,指定天数返回值Date。当n的值大于0时返回参数date指定日期后第n天的日期;当n的值小于0时返回参数date指定日期前第n天的日期。如果任何参数的值为NULL,则RelativeDate()函数返回NULL。
30天就用RelativeDate(today(),30)
可能要自己写一个函数来实现,我看pb9有relativedate,relativetime这两个函数,前者是日期加天数的,后者是时间加秒数的
你可以先将你的datetime数据分别转换成date和time,再通过relativetime 加上相应的秒数,还需判断加上小时后是否超过24,如超过则日期需加1
大致写法如下:其中ld_sdate ,ll_addhours可作为函数的参数
datetime ldt_sdate
date ld_sdate
time lt_stime
long ll_addhours,ll_day,ll_hours
ldt_sdate = '2012-12-03 16:30'
ll_addhours = 8
ld_sdate = date(ldt_sdate)
lt_stime = time(ldt_sdate)
ll_day = int(ll_addhours / 24) --如时间超过24小时则可先算出增加的天数
ll_hours = mod(ll_addhours / 24)
if ll_hours + hour(lt_time) > 24 then
ll_day ++
end if
ldt_edate = datetime(relativedate(ld_sdate,ll_day),relativetime(lt_time,ll_hours 60 60))
global function string uf_firstday ();string ls_date
date ld_today
ld_today=date(today())
choose case month(ld_today)
case 1 to 3
ls_date=string(year(ld_today))+"-01-01"
case 4 to 6
ls_date=string(year(ld_today))+"-04-01"
case 7 to 9
ls_date=string(year(ld_today))+"-07-01"
case 10 to 12
ls_date=string(year(ld_today))+"-10-01"
end choose
return ls_date
end function
取该季度第一天
global function string uf_lastday ();string ls_date
date ld_today
ld_today=date(today())
choose case month(ld_today)
case 1 to 3
ls_date=string(year(ld_today))+"-03-31"
case 4 to 6
ls_date=string(year(ld_today))+"-06-30"
case 7 to 9
ls_date=string(year(ld_today))+"-09-30"
case 10 to 12
ls_date=string(year(ld_today))+"-12-31"
end choose
return ls_date
end function
取该季度最后一天
(1)DeclareInstance Variables——Declare ——Instance Variables
//声明实例变量string is_sql
(2)窗体加载事件:w_query——open()事件中
//数据窗口dw设置连接事务sqlcadw_querysettransobject(sqlca)//让数据窗口控件从库中提取数据//dw_queryretrieve()//得到原始语法,为检索做准备is_sql = dw_querygetsqlselect()
3)查询cb_query——Clicked()事件:
string ls_start,ls_end ,ls_select
string ls_left ,ls_right//得到开始和结束时间ls_start = em_starttextls_end = em_endtextls_select = ''// 开始时间if not isnull(ls_start) and ls_start <> "" and lower(ls_start) <> 'none' then
ls_select = ls_select + " convert(char(10),抵店时间,120) >= '" + ls_start + "'"end if// 结束时间if not isnull(ls_end) and ls_end <> "" and lower(ls_end) <> 'none' then if ls_select = "" then
ls_select = " convert(char(10),抵店时间,120) <= '" + ls_end + "'"
else
ls_select = ls_select + " AND convert(char(10),抵店时间,120) <= '" + ls_end + "' "
end ifend if拼SQL语句
ls_select = is_sql + ' where ' + ls_selectif ls_select <> '' then //赋值SQL语句
dw_querysetsqlselect(ls_select)
end ifdw_queryretrieve() //检索数据
昏~中考也要用pb
我不是用pb的
但是我知道SQL语句可以用
select col1,col2
from table
where to_char(col_date,'YYYYMMDD') between '20060101' and '20060526'
以上就是关于PB设置机器时间提示error c0001:illegal data type:systemtime全部的内容,包括:PB设置机器时间提示error c0001:illegal data type:systemtime、PB要怎样才能按照数据窗口中有时间的一列来检索、pb中如何获取当前时间的30天之后的日期等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)