我正在使用 JasperReports / iReport 来完成我的报告。我已经为客户写了一个查询日期的查询,但有1个问题,日期是时间部分。
如何忽略客户端键入数据的时间部分?
date rate 2/2/2014 12:56:21.0000 PM ABC 4/2/2014 12:56:21.0000 PM EFG 5/2/2014 12:56:21.0000 PM HIJ ...
我已经从客户指定设计时使用年,月和日的参数。换句话说,当客户键在年,月和日时, 数据将以这种方式显示:
2/2/2014 12:56:21.0000 PM ABC
我写的查询如下所示:
select date,rate
from mytable
where rownum=1
and tran_dt<=(select date
from mytable
where year(date)=$P{year}
and month(date)=$P{month}
and day(date)=$P{day}
)
order by
date
我正在使用pl / sql查询...
答案 0 :(得分:1)
SQL SERVER:
使用此
select convert(varchar(10), '2011-02-25 21:17:33.933', 120)
喜欢这个
Select DATE_FORMAT(date,'%y-%m-%d'),rate from mytable
where rownum=1 and tran_dt<=(select tran_dt from bi01_trandetail where
year(date)=$P{year} and month(tran_dt)=$P{month} and day(tran_dt)=$P{day})
order by date
<强> MYSQL 强>
使用
DATE_FORMAT(date,'%y-%m-%d')
Select DATE_FORMAT(date,'%y-%m-%d'),rate from mytable
where rownum=1 and tran_dt<=(select tran_dt from bi01_trandetail where
year(date)=$P{year} and month(tran_dt)=$P{month} and day(tran_dt)=$P{day})
order by date
OR
SELECT DATE('2003-12-31 01:02:03');
'2003-12-31'
Select date(date),rate from mytable
where rownum=1 and tran_dt<=(select tran_dt from bi01_trandetail where
year(date)=$P{year} and month(tran_dt)=$P{month} and day(tran_dt)=$P{day})
order by date
您的新查询:
select date,rate
from mytable
where rownum=1
and tran_dt<=(select DATE_FORMAT(date,'%y-%m-%d')
from mytable
where year(date)=$P{year}
and month(date)=$P{month}
and day(date)=$P{day}
)
order by
date
答案 1 :(得分:0)
你必须从DDBB ......
开始使用PL / SQL 检查TO_CHAR文档,http://www.techonthenet.com/oracle/functions/to_char.php,(以及此SO问题,; D:How to format a Date variable in PLSQL)。
您的查询将是:
SELECT TO_CHAR(date, 'MM/DD/YYYY'), rate from mytable ...
使用MySQL (注意:我留下MySQL答案,因为我先回答了它,因为它没有指定RMDB)
MySQL DATE_FORMAT函数,只获得你想要的东西: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format
以网络为例:
SELECT DATE_FORMAT('2009-10-04 22:23:00', '%W %M %Y');
-> 'Sunday October 2009'
测试您建议的案例:
SELECT DATE_FORMAT('2014-03-02 23:45:35', '%e/%c/%y %H:%i:%s %p');
-> 2/3/14 23:45:35 PM
没有时间部分:
SELECT DATE_FORMAT('2014-03-02 23:45:35', '%e/%c/%y');
-> 2/3/14
您的查询将是:
select DATE_FORMAT(date, '%e/%c/%y') ,rate from mytable ...
...另一种方式是使用服务器脚本中的日期函数,但这是另一个历史记录,我需要您使用的语言,XD
答案 2 :(得分:0)
谢谢大家的回复,我找到了解决这个问题的方法。 让我分享查询,
从mytable选择率,截断(日期)为EFFDT 其中rownum = 1 和 date&lt; = to_date(:DAY ||'/'||:MTH ||'/'||:YR,'DD / MM / YYYY') 按日期排序desc