PB里如何用时间段查询数据

我的数据库用的是ORACLE,我之前的是按照年-月-日查询只要用数据窗口就能达到但是最近要改成年-月-日小时-分-秒都要用做查询条件用数据窗口就完成不了了我尝试了很多种方... 我的数据库用的是ORACLE,
我之前的是按照年-月-日查询 只要用数据窗口就能达到
但是最近要改成年-月-日 小时-分-秒 都要用做查询条件
用数据窗口就完成不了了
我尝试了很多种方法 还是不行

date ld_sysdate,ld_date_begin,ld_date_end,ld_date
string ls_str
select sysdate into :ld_sysdate from dual;
select to_date(sysdate - 1) into :ld_date from dual;
em_begin.text = string(ld_date)
em_end.text = string(ld_sysdate)
em_begin.GetData(ld_date_begin)
em_end.GetData(ld_date_end)
ls_str = Upper(dw_1.GetSQLSelect())
If Pos(ls_str,"WHERE ") > 0 Then
ls_str = Left(ls_str, Pos(ls_str,"WHERE ") - 1)
end if

If (IsNull(ld_date_begin) Or String(ld_date_begin) = '') And (IsNull(ld_date_end) Or String(ld_date_end) = '') Then
Else
ls_str += "IMPORT_DATE>=to_date('"+string(ld_date_begin)+"','yyyy-mm-dd hh:mi:ss') and IMPORT_DATE<=to_date('"+string(ld_date_end)+"','yyyy-mm-dd hh:mi:ss')"
dw_1.SetSQLSelect(ls_str)
dw_1.SetTransObject(SQLCA)
dw_1.Retrieve()
End If
这种直接用SQL语句查询的也不行 报错 说SQL语句不正确 因为PB里没有TO_DATE的函数 而ORACLE里必须用TO_DATE查询 所以很迷茫
有哪位高手帮我解决下 谢谢~~
展开
 我来答
for_get2007
2010-07-02 · TA获得超过510个赞
知道小有建树答主
回答量:112
采纳率:100%
帮助的人:181万
展开全部
首先select to_date(sysdate - 1) into :ld_date from dual;
这句取出的时间就只是年月日,应该是select sysdate - 1 into :ld_date from dual;才取出年月日时分秒;
其次ls_str = Left(ls_str, Pos(ls_str,"WHERE ") - 1)
这句取出的SQL语法是不带"WHERE"的,可是你后面ls_str += "IMPORT_DATE>=to_date('"+string(ld_date_begin)+"','yyyy-mm-dd hh:mi:ss') and IMPORT_DATE<=to_date('"+string(ld_date_end)+"','yyyy-mm-dd hh:mi:ss')" 也不带“WHERE”所以应该改成

date ld_sysdate,ld_date_begin,ld_date_end,ld_date
string ls_str
select sysdate into :ld_sysdate from dual;
select sysdate - 1 into :ld_date from dual;
em_begin.text = string(ld_date,'yyyy-mm-dd hh:mi:ss')
em_end.text = string(ld_sysdate,'yyyy-mm-dd hh:mi:ss')
em_begin.GetData(ld_date_begin)
em_end.GetData(ld_date_end)
ls_str = Upper(dw_1.GetSQLSelect())
If Pos(ls_str,"WHERE ") > 0 Then
ls_str = Left(ls_str, Pos(ls_str,"WHERE ") - 1)
end if

If (IsNull(ld_date_begin) Or String(ld_date_begin) = '') And (IsNull(ld_date_end) Or String(ld_date_end) = '') Then
Else
ls_str += "WHERE IMPORT_DATE>='"+ld_date+"' and IMPORT_DATE<='"+ld_sysdate+"'" /*如果你的IMPORT_DATE栏位是DATE型可以这么写,如果是CHAR型的话应该写成ls_str += "WHERE IMPORT_DATE>='"+TO_CHAR(ld_date,'yyyy-mm-dd hh:mi:ss') +"' and IMPORT_DATE<='"+TO_CHAR(ld_sysdate,'yyyy-mm-dd hh:mi:ss') +"'" 还要看的栏位格式是不是'yyyy-mm-dd hh:mi:ss' */
dw_1.SetSQLSelect(ls_str)
dw_1.SetTransObject(SQLCA)
dw_1.Retrieve()
End If

TO_DATE是可以用在SQL语句里的。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wweilei
2010-07-12 · 超过14用户采纳过TA的回答
知道答主
回答量:60
采纳率:0%
帮助的人:44.1万
展开全部
pb可以用 date('2010-07-12'),time('00:00:00')
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式