Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Usenet -> c.d.o.server -> Re: TIMESTAMP query
"DA Morgan" <damorgan_at_psoug.org> a écrit dans le message de news: 1125389007.165514_at_yasure...
| June Moore wrote:
| > Can you pls tell me how to select where a TIMESTAMP date is N hours
| > ago?
| >
| > select * from <table> where job_date ... ?
| >
| > thanks
| > JM
|
|
| SQL*Plus: Release 10.1.0.4.0 - Production on Tue Aug 30 01:03:38 2005
|
| Copyright (c) 1982, 2005, Oracle. All rights reserved.
|
| Connected to:
| Oracle Database 10g Enterprise Edition Release 10.1.0.4.0 - Production
| With the Partitioning, OLAP and Data Mining options
|
| SQL> select to_char(systimestamp, 'HH:MI:SS') from dual;
|
| TO_CHAR(
| --------
| 01:03:50
|
| SQL> ed
| Wrote file afiedt.buf
|
| 1* select to_char(systimestamp-1/24, 'HH:MI:SS') from dual
| SQL> /
|
| TO_CHAR(
| --------
| 12:03:59
|
| SQL>
|
| --
| Daniel A. Morgan
| http://www.psoug.org
| damorgan_at_x.washington.edu
| (replace x with u to respond)
Not fully true (at least on 9i, i don't check it on 10g) as when you use direct artihmetic there is a conversion from timestamp to date datatype, so you lose fractional:
SQL> select to_char(systimestamp,'HH24:MI:SS.FF6') from dual; TO_CHAR(SYSTIMESTA
1 row selected.
SQL> select to_char(systimestamp-1/24,'HH24:MI:SS.FF6') from dual; select to_char(systimestamp-1/24,'HH24:MI:SS.FF6') from dual
*
SQL> select to_char(systimestamp-1/24,'HH24:MI:SS') from dual; TO_CHAR(S
1 row selected.
You can use one of this way:
SQL> select to_char(systimestamp-numtodsinterval(1,'HOUR'),'HH24:MI:SS.FF6') from dual; TO_CHAR(SYSTIMESTA
1 row selected.
SQL> select to_char(systimestamp-to_dsinterval('0 1:00:00'),'HH24:MI:SS.FF6') from dual; TO_CHAR(SYSTIMESTA
1 row selected.
SQL> select to_char(systimestamp-interval '1' hour,'HH24:MI:SS.FF6') from dual; TO_CHAR(SYSTIMESTA
1 row selected.
Regards
Michel Cadot
Received on Tue Aug 30 2005 - 08:55:04 CDT
![]() |
![]() |