JSTL sql:query date field has zero time part
I have a little JSP where I am using JSTL to do a query against a table "ph_application" that has a date field "rundate". This field has many different dates and times in it.
Here is the code snippet:
<sql:setDataSource url="jdbc:oracle:thin:@oraprd02:1521:ipp4" user="site" password="pmc_site"/>
<sql:query var="application" sql="select * from ph_application"/>
<c:forEach items="${application.rows}" var="row">
<tr>
<td><c:out value="${row.name}" default=" " escapeXml="false"/></td>
<td><fmt:formatDate value="${row.rundate}" type="both"/></td>
</tr>
</c:forEach>
The resulting date/time output always has a 12:00:00 AM time regardless of what is actually in the table. I have changed the fmt:formatDate to a c:out of the row.rundate.time value and it appears that the time part of the date is actually zero at this point.
Is there an inconsistancy between the oracle date type and what JSTL is expecting (somewhere)?
Any help and/or verification is appreciated.
Richard
I'm running this from within JDeveloper 10g.
Similar Messages
-
Different LOV behavior between SQL query data model and data template
I have noticed different behavior when using parameters linked to list of values (LOV) of type menu with the multiple selection option enabled and a SQL query data model vs a data template. Here's the example because that first sentence was probably really confusing.
SQL Query:
select
plmc.MonthCode, plmc.ModalityDim, plmc.ModalityName,plmc.RegionDim
from
DataOut.dbo.PatientLabMonthlyCross plmc
where
plmc.MonthCode = 200202
and plmc.RegionDim = 1209
and 1 =
case
when coalesce(:modalityDim,null) is null
then 1
else
case
when plmc.ModalityDim in (:modalityDim)
then 1
else 0
end
end
Putting BI Publisher into debug mode, defining a data model of type SQL Query, defining a parameter called :modalityDim linked to a LOV that allows multiple selections, and selecting a couple of values from the LOV the output of the prepared statement is:
[081607_122647956][][STATEMENT] Sql Query : select
plmc.MonthCode,
plmc.ModalityDim,
plmc.ModalityName,
plmc.RegionDim
from
DataOut.dbo.PatientLabMonthlyCross plmc
where
plmc.MonthCode = 200202
and plmc.RegionDim = 1209
and 1 =
case
when coalesce(?,?,null) is null
then 1
else
case
when plmc.ModalityDim in (?,?)
then 1
else 0
end
end
[081607_122647956][][STATEMENT] 1:6
[081607_122647956][][STATEMENT] 2:7
[081607_122647956][][STATEMENT] 3:6
[081607_122647956][][STATEMENT] 4:7
[081607_122654713][][EVENT] Data Generation Completed...
[081607_122654713][][EVENT] Total Data Generation Time 7.0 seconds
Note how the bind variable :modalityDim was changed into two parameters in the prepared statement.
When I use this same SQL Query in a data template the output is:
[081607_012113018][][STATEMENT] Sql Query : select
plmc.MonthCode,
plmc.ModalityDim,
plmc.ModalityName,
plmc.RegionDim
from
DataOut.dbo.PatientLabMonthlyCross plmc
where
plmc.MonthCode = 200202
and plmc.RegionDim = 1209
and 1 =
case
when coalesce(?,null) is null
then 1
else
case
when plmc.ModalityDim in (?)
then 1
else 0
end
end
[081607_012113018][][STATEMENT] 1:'6','7'
[081607_012113018][][STATEMENT] 2:'6','7'
[081607_012113574][][EXCEPTION] java.sql.SQLException: Syntax error converting the nvarchar value ''6','7'' to a column of data type int.
Note the exception because it is trying to convert the multiple parameter values.
Am I doing something completely wrong here? I really need to use a data template because I will need to link a couple of queries together from different database vendors.
-markThis is for 10.1.3.4 - because in 11g every SQL query is automatially part of a data model.
In 10g SQL query is for simple unrelated SQL queries.
If you need to use advance features such as:
a) multiple SQL queries that are joined in master-detail relation ships
b) before/after report triggers
Then you will need to use the data template, which is an XML description
of the queries, links, and PL/SQL calls.
hope that helps,
Klaus -
Is there a way to consolidate calculations used in SQL Query Data Sets?
I am building SQL Query Data Sets against multiple DB Views which all have different date formats. I have the date parameter working well, but want to consolidate the changes that I have to do to it especially for the quarter. For example the SQL against a monthly view would use "where year_month > to_char(:ST_DATE, 'YYYY-MM')" which is not too hard, but to make that work for the quarterly view I need several concats and a decode to get a "> '2012-Q2'". I would like not to have to do this within every where clause. I had put this into a global element hoping to use that in a filter for the data set, but the filter does not have access to global elements only parameters.
Is there any way to refer to a calculated global element from the data set to do this? I am using Layout Templates, so even if I wanted to I could not do the condition within the template.
Thanks,
RickChange the following line to include the red coloured parts
<div class="MasterColumn" spry:repeat="ds4" spry:setrow="ds4" spry:hover="MasterColumnHover" spry:select="MasterColumnSelected">
<span>{Dsp_#}</span><span>{Dsp_WkDay}</span><span>{Dsp_Event}</span>
</div>
The add the following style rule to your document:
.MasterColumn span {
display: inline-block;
I hope this helps.
Ben -
With clause in SQL query data model
Hello!
isn't it possible to use the with clause in sql query data models?
for example following query:
WITH
a_test as (
select dummy from dual
select *
from a_test
brings up a "XML Parsing Error: no element found"-error...
BR PaulI tried a slightly different query (see below) and the query worked fine and retrieved data.. I did not get any errors.
WITH
a_test as (
select 'dummy' from dual
select *
from a_test
This works as well.. retrieving the value of the parameter
WITH
a_test as (
select :Test_ID from dual
select *
from a_test
thanks,
BIPuser -
SQL Concat function seem not to work properly in SQL query data model. BIP 11g
I try to use this function to show entire name CONCAT(name, ' ', surname) and it doesnt show the surname. it looks like it only tooks 2 arguments. I use it with the option "Add element by expression" within a SQL Query - Data set.
Luciai don't believe you
please post more info, may be screen or sql or some more useful statement
CONCAT(name, ' ', surname) and it doesnt show the surname
may be because for some case "surname" is empty or may be you incorrect use concat function
one way mentioned by BluShadow is " || " operator - http://docs.oracle.com/cd/B28359_01/server.111/b28286/operators003.htm#SQLRF51156
and another is concat function http://docs.oracle.com/cd/B28359_01/server.111/b28286/functions026.htm#SQLRF00619
so for your case it can be like
CONCAT(CONCAT(name, ' '), surname) -
Adding one day to a oracle.jbo.domain.Date and truncating the time part
JDev 11.1.1.4.0
Hello
I need to add a day to oracle.jbo.domain.Date and get back a oracle.jbo.domain.Date without the time part.
So far I've got
Date valueDate = (Date)rowCpt.getAttribute("ValueDate");
Calendar cal = Calendar.getInstance();
cal.setTime(new java.util.Date(valueDate.timestampValue().getTime()));
cal.add(Calendar.DATE, 1);
Date newDate = new oracle.jbo.domain.Date(new Timestamp(cal.getTime().getTime()));This adds 1 day to the date but keeps the time part of the date.
How do I get rid of the time part of the date ?
Thanks
PaulThe Calendar class allows you to set or clear each field.
Date valueDate = (Date)rowCpt.getAttribute("ValueDate");
Calendar cal = Calendar.getInstance();
cal.setTime(new java.util.Date(valueDate.timestampValue().getTime()));
cal.add(Calendar.DATE, 1);
cal.clear(Calendar.HOUR);
cal.clear(Calendar.MINUTE);
cal.clear(Calendar.SECOND);
cal.clear(Calendar.MILLISECOND);
Date newDate = new oracle.jbo.domain.Date(cal.getTimeInMillis());should work.
Timo -
Why does Oracle SQL query returning a date field without the time component
Hi,
I'm a novice SQL user & hv just installed Oracle SQL developer (Version 3.0.04, Build MAIN-04.34).
I made the same SQL query using "Oracle SQL developer" & "TOAD for Oracle 9.0.1" but I got 2 different format on the same date field:
On TOAD, I get the date field extracted as *04/26/2011 23:12:58*
On Oracle, I get the date field extracted as *26/APR/11*
Why is the Oracle result in a different format & missing the time component?
Is there any option/preference that I need to set in Oracle SQL developer to get the full date/time format displayed?
I've tried to set my the date format to DD/MON/RR HH12:MI:SSXFF AM under the preference -> database NLS but I still get the same format!
Plse help!hokim wrote:
Hi,
I'm a novice SQL user & hv just installed Oracle SQL developer (Version 3.0.04, Build MAIN-04.34).
I made the same SQL query using "Oracle SQL developer" & "TOAD for Oracle 9.0.1" but I got 2 different format on the same date field:
On TOAD, I get the date field extracted as *04/26/2011 23:12:58*
On Oracle, I get the date field extracted as *26/APR/11*
Why is the Oracle result in a different format & missing the time component?
Is there any option/preference that I need to set in Oracle SQL developer to get the full date/time format displayed?
I've tried to set my the date format to DD/MON/RR HH12:MI:SSXFF AM under the preference -> database NLS but I still get the same format!
Plse help!http://edstevensdba.wordpress.com/category/nls_date_format/ -
Query the date field for specific time
I need to be able to run a query on a date field that retrieves specified times.
Any ideas???You could do something like
SELECT *
FROM someTable
WHERE to_char(date_column, 'HH24:MI:SS') = '17:01:04';Justin -
Hi All,
I'm new to XMLPublisher so i'll try to explain the best i can the problem i'm having creating a Data Model for my report.
I'm using Database XE and have installed XMLPublisher, as XE is extremely flexible in creating apps i'm having huge trouble finding a reporting solution for my applicaiton. I have created an app to track and control time and expense which i want to generate timesheet, expense sheets, invoice etc from.
Having done some read i think XML is the best approach for me however i'm having huge troubles with my data model.
EXAMPLE:
I have 2 tables to start with, first table holds client information and the second table holds project information. One client can have many projects.
When i create the Data Model using SQL i get the obvious problem that when a client has more then one project my XML structure is incorrect.
SELECT gc.name AS CLIENT,
gp.name AS PROJECT
FROM gte_client gc,
gte_project gp
WHERE gc.client_id = gp.client_id(+)
The above SQL creates the following XML
- <ROWSET>
- <ROW>
<NAME>Symatrix Ltd</NAME>
<NAME>Symatrix Pre-Sales</NAME>
</ROW>
- <ROW>
<NAME>Aston Carter</NAME>
<NAME>MOD</NAME>
</ROW>
- <ROW>
<NAME>Symatrix Ltd</NAME>
<NAME>Fujitsu</NAME>
</ROW>
</ROWSET>
Obvious problem here is the fact that client Symatrix appears twice as there are 2 projects.
I have tried to write SQL/XML and i think i'm beginning to understand the structure of the XML functions however XMLPublisher doesn't appear to understand the syntax when creating a SQL Query for the data model.
I hope all this makes sense.
Kind Regards
GlenHi All,
Ok, so with a little searching through documents and articles on the web i found this information.
http://blogs.oracle.com/xmlpublisher/2006/05/05#a38
this details the exact thing i'm trying to achieve so anyone else who searches this forum with a similar problem check this out.
Regards
Glen -
How to insert row where DB date field has default value.
APEX 4.1, Oracle 11.2
I'm trying to insert a row using "javascript:addRow();" where the report query is an SQL Query (Updateable Report).
1) Several of the fields are display-only with defaulted values.
2) No problem with the VARCHAR2 fields.
3) And if RUN_DT is a text field, the insert works.
4) But I get errors when trying to make RUN_DT (DD-MON-YYYY) display-only and default it to P63_RUN_DT. I display P63_RUN_DT so I see it is correct.
Now, this is not a new question. See:
Error inserting sysdate with time in tabular form region https://forums.oracle.com/thread/2551916 (Not answered)
Date value in tabular form https://forums.oracle.com/thread/2478358 (Not answered)
Help! Unable to set default date value for Tabular form DB date field! https://forums.oracle.com/thread/2473208 (Not answered)
Default Value Date Picker Field https://forums.oracle.com/thread/2468973 (Not answered)
Tabular Form Default Value PL/SQL https://forums.oracle.com/thread/2464192 (Not answered)
Display 1st region invoice date into tabular form invoice date column. https://forums.oracle.com/thread/2458561 (Not answered)
Default System date and time in Tabular form https://forums.oracle.com/thread/2449615 (Not answered)
Setting default value of Tabular form item is not working https://forums.oracle.com/thread/2396024 (Not answer)
apex tabular form https://forums.oracle.com/thread/2337098 (Not answered)
Various folks recommended using Default PL/SQL and SYSDATE when SYSDATE was the desired default value. That worked for some and not for others. I could not get it to work for me. The errors I receive are "•Column must have a value. (Row 1) " and "ORA-01410: invalid ROWID". I believe the ROWID error is an example of spurious error cascade caused by the RUN_DT problem. I believe it will disappear once the RUN_DT problem is solved.
I will try to replicate on apex.oracle.com
Thoughts?
HowardUpdate: At least in my case, it seems the RUN_DT date column cannot be Standard Report Column. I made it "Display as Text (saves state)". Standard Report Column works for the defaulted VARCHAR2 columns. Go figure!
(more) And I could not get it to work with "Item" (P63_RUN_DT) as the Default. However, it seems to work -- so far -- using Default PL/SQL of TO_DATE(:P63_RUN_DT,'DD-MON-YYYY'). -
How to construct a sql query when field having single quote
Hi all,
I have been working on web application , here is my requirement:
I'm constructing sql statement dynamically from dynamic user input (form data). In one of the field having single quote.
while executing the query it is getting problem because of single quote .. so how do i resolve my problem.
single quote should be there. (I'm using Ms-Access as my database).
Thanks in advance
abelUse PreparedStatement. Always. It not only eases setting Java objects in a SQL query, but also protects you against SQL injections.
Prepare yourself: [http://java.sun.com/docs/books/tutorial/jdbc/basics/prepared.html]. -
Pass jstl sql query result to jsp
Hi I have the following code which works perfectly
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<sql:setDataSource dataSource="jdbc/dbtest"/>
<sql:query var="items" sql="SELECT * FROM homepagesubscriptions">
</sql:query>
<table border="0" align="center" valign="top">
<c:forEach var="row" items="${items.rows}" begin = "0" end="10" >
<tr>
<td>
<img src="${row.imgurl}" width="100" height = "100"></a>
</td>
<tr>
</c:forEach>
</table> Now what I want is to perform the query in one page and then display the data in another, as such
index.jsp
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
<sql:setDataSource dataSource="jdbc/dbtest"/>
<sql:query var="items" sql="SELECT * FROM homepagesubscriptions">
</sql:query>
<!-- NOT SURE WHAT TO DO HERE
<jsp:useBean id="resultBean" scope="request"
class="javax.servlet.jsp.jstl.sql.ResultSupport" />
<jsp:setProperty name="rs" property="rs" />
<jsp:forward page="test.jsp" />
-->
test.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:set var="items" value="${resultBean}" />
<table border="0" align="center" valign="top">
<c:forEach var="row" items="${items.rows}" begin = "0" end="10" >
<tr>
<td>
<img src="${row.imgurl}" width="100" height = "100"></a>
</td>
<tr>
</c:forEach>
</table> I know in index.jsp I can use jsp forward and usebean but am not sure how to? What type is the result from the query? thanksTake a look at the "scope" attribute of the <sql:query> tag.
query.jsp:
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
<sql:setDataSource dataSource="jdbc/dbtest"/>
<sql:query var="items" scope="request" sql="SELECT * FROM homepagesubscriptions"/>
<jsp:forward page="test.jsp" />and then test.jsp:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<table border="0" align="center" valign="top">
<c:forEach var="row" items="${items.rows}" begin = "0" end="10" >
<tr>
<td>
<img src="${row.imgurl}" width="100" height = "100"></a>
</td>
<tr>
</c:forEach>
</table> -
Help on JSTL sql:query / tag
Hi.....
Currently i am trying to query a date from MSSQL using <sql> tag. I had tested in MSSQL on this SQL statement which is:-
SELECT * FROM hr_leave WHERE startDate LIKE 'Apr 20 2006%'
It can query my MSSQL datetime.
Then , I apply this query inside my JSP/JSTL page which is :-
<%@ include file="/common/header.jsp" %>
<%@ taglib prefix="sql" uri="http://java.sun.com/jstl/sql" %>
<jsp:useBean id="now" class="java.text.SimpleDateFormat"/> <!-- get current date -->
<c:set var="userid" value="${sessionScope.currentUser.id}"/> <!-- get current user id -->
<c:set var="dates"><fmt:formatDate value="${now}" type="DATE" pattern="MMM dd yyyy"/></c:set>
<sql:setDataSource var="ds" driver="com.microsoft.sqlserver.jdbc.SQLServerDriver" url="jdbc:sqlserver://192.168.250.86:1223;DatabaseName=eleavedb;SelectMethod=cursor" user="sa" password="sapassword"/>
<sql:query var="countLeave" dataSource="${ds}">
SELECT * FROM hr_leave_entry WHERE startDate LIKE (?, '%')
<sql:param value="${dates}"/>
</sql:query>
From the code above it displayed an an error for me. I am worried whether my select statement and my way of using the '%' symbol is it not correct.
Can anyone guide me? Thank You!And the error was?
No, that sql does not look valid the way that you have written it.
Parameters are NOT copied/pasted into sql strings. They replace the value directly. So the correct sql would be
SELECT * FROM hr_leave_entry WHERE startDate LIKE ?
You would need to actually pass the parameter as 'Apr 20 2006%' -
I am having a problem querying on date fields using the Thin driver. I originally had the problem in the context of a bean used by a JSP, but reproduced the problem in a test app. The problem is that despite the fields being populated and verifying the SQL in SQLPLUS, the calls to ResultSet.getString() and getDate() always return null.
I run the query as follows:
results = statement.executeQuery("select NAME, START_DATE from EMPLOYEES where id=1");
String startDate;
try{
results.next();
startDate = results.getString("START_DATE");
catch ...
startDate always comes up null.
I have also tried ResultSet.getDate(), same problem.
Am I doing something wrong, or is there a bug? I have searched the news groups and bug reports and haven't found anything.
Also, a possibly related problem:
Using the same driver, a where clause of the form "where START_DATE < {d `2000-01-01'}" does not return any records, despite several qualifying records in the database.
This literal date format comes from section 11.3 of the JDBC 1.2 spec. Am I using this correctly?
I am using the 8.1.6 driver, and I think the db is 8 or 8i, I will check with the DBA tomorrow.
Any help is appreciated.
Thanks,
AlUse PreparedStatement and its set methods instead. It will not only protect you from SQL injections, but it will absolutely also ease setting Java objects in an SQL query.
Prepare here: http://www.google.com/search?q=preparedstatement+tutorial+site:sun.com -
IDoc posted in R/3 but data for Date field has not generated.
Hi Experts
This is JDBC to IDoc scenarion.
Source: MS SQL Server
Date Data Type: smalldatetime
Date field Format: yyyy-MM-dd hh:mm:ss --> example: 2009-11-13 00:00:00
XI Mapping: Source Date --> Transformation --> Target Date
Transformation: yyyy-MM-dd hh:mm:ss to yyyyMMdd
Target: R/3 System
Date Data Type: ERDAT from VBAK table - Date on Which Record Was Created
Date field Format: Date field (YYYYMMDD) stored as char(8)
Check points:
1. Mapping is working fine in XI and transformation is done with the test data: 2009-11-13 00:00:00 --> to ---> 20091113
2. In SXMB_MONI the data is processed from the source and the IDoc XML data is generated. In the IDoc XML data the date field is containing the value <DATE>20091113</DATE>
3. But when I tried to open the IDoc(SE05) in R/3 the date field is empty and no data is generated.
Request you to let me know why the error is happening.
Regards
RamHi Ram,
First try to test the same IDOC generated in ECC Box by populating date field value using WE19 and test .
Or
Instead of passing date value from SQL Server, Just give a try with Current Date function in Mapping and test in ECC system.
then we can think on further analysis.
Regards,
Vijay
Maybe you are looking for
-
ITunes wont start up when iPod is conected.....
iTunes wont start up when iPod is conected, I have the option checked in the option Box,I have all the latest updates and upgrades. I dont know if maybe Windows has something to do with this,with all their updates every week.I have win xp sp2,,,any h
-
XML parser to parse XML inside HTML file
Hi, I wish to know is there any other parsers apart from JAXP to parse xml content present inside HTML file. For example, <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html
-
Itunes 9.2 freezes during playback
Recently during playback, video or audio will freeze for a couple of seconds and then continue. This happens more often during movie playback. It usually happens about an hour into a movie, but will also happen during song playback. I usually end up
-
Hi my name is Jamie and i want to know how to update the drivers on a mac os x lion 10.74
-
I get error 2203 (2147287035) on Win7 Home Premium