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查询 所以很迷茫
有哪位高手帮我解决下 谢谢~~ 展开
我之前的是按照年-月-日查询 只要用数据窗口就能达到
但是最近要改成年-月-日 小时-分-秒 都要用做查询条件
用数据窗口就完成不了了
我尝试了很多种方法 还是不行
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查询 所以很迷茫
有哪位高手帮我解决下 谢谢~~ 展开
展开全部
首先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语句里的。
这句取出的时间就只是年月日,应该是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语句里的。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询