嘿,嘿,
我需要从日期A 00:00:00和日期B 00:00:00 (在本例中日期A: 16.07.2010,日期B: 20.07.2010)执行的操作中获取一些数据,因此我编写了以下select语句:
Select avg(cnt),fext from (
Select
to_char(mytable.dateadded, 'DD.MM.YYYY') dateadded,
fext,
count(id) cnt
from mytable
where dateadded between
to_date('16.07.2010', 'dd,MM,YYYY') and
to_date('20.07.2010', 'dd,MM,YYYY')
group by
to_char(mytable.dateadded, 'DD.MM.YYYY'),
fext)
group by fext;原始的(和工作的)语句有:
to_date('16.07.2010 00:00:00', 'dd,MM,YYYY HH24:Mi:SS') and
to_date('20.07.2010 00:00:00', 'dd,MM,YYYY HH24:Mi:SS')所以问题是:
to_date('16.07.2010', 'dd,MM,YYYY') and
to_date('20.07.2010', 'dd,MM,YYYY')是否已将日期A和B的时间设置为00:00:00?
Greetz
发布于 2010-07-26 15:59:26
如果未指定日期的时间部分,则为00:00:00。
如果你担心时间部分,你总是可以截断时间部分:
Trunc(to_date('16.07.2010', 'dd.MM.YYYY')) and
Trunc(to_date('20.07.2010', 'dd.MM.YYYY'))发布于 2010-07-26 16:29:11
最简单的方法是使用ANSI日期文字,它不允许指定时间,因此在内部使用00:00:00时间部分:
dateadded between date '2010-07-16' and date '2010-07-20'您的表达式看起来很奇怪,因为您的日期字符串包含点作为时间分量分隔符,但是您的日期格式包含逗号。但是Oracle接受它:
rwijk@XE> select to_date('16.07.2010', 'dd,MM,YYYY') from dual;
TO_DATE('16.07.2010
-------------------
16-07-2010 00:00:00
1 row selected.为了简单起见,我使用ANSI日期文字。
问候你,罗伯。
发布于 2010-07-26 17:03:18
此查询将返回一行,回答您的问题我认为:
SELECT TO_DATE('16.07.2010 00:00:00', 'dd,MM,YYYY HH24:Mi:SS'),
TO_DATE('16.07.2010', 'dd,MM,YYYY')
FROM dual
WHERE to_date('16.07.2010 00:00:00', 'dd,MM,YYYY HH24:Mi:SS') = to_date('16.07.2010', 'dd,MM,YYYY') https://stackoverflow.com/questions/3333075
复制相似问题