dbTalk Databases Forums  

SQL - Date Math question

comp.databases.oracle comp.databases.oracle


Discuss SQL - Date Math question in the comp.databases.oracle forum.



Reply
 
Thread Tools Display Modes
  #1  
Old   
Alex
 
Posts: n/a

Default SQL - Date Math question - 03-08-2005 , 07:34 AM






I have two SQL statements:

Statement #1

SELECT CARRIER_REFERENCE_NUMBER,
CURRENT_FLEET_SIZE,
trunc(Fleet_Size_Effective_From_Date),
trunc(Fleet_Size_Effective_To_Date)
FROM CAPS.CARRIER_FLEET_SIZE_HISTORY
WHERE CARRIER_REFERENCE_NUMBER = 481
AND trunc(Fleet_Size_Effective_TO_Date) >=
TO_DATE('24-FEB-2003') AND trunc(Fleet_Size_Effective_From_Date) <=
TO_DATE('24-FEB-2004')
ORDER BY CARRIER_REFERENCE_NUMBER,
Fleet_Size_Effective_From_Date,
Fleet_Size_Effective_To_Date,
CURRENT_FLEET_SIZE

************************************************** ****************************
Statement #2

SELECT CARRIER_REFERENCE_NUMBER,
CURRENT_FLEET_SIZE,
TRUNC(Fleet_Size_Effective_From_Date) AS START_DATE,
TRUNC(Fleet_Size_Effective_To_Date) AS END_DATE
FROM CAPS.CARRIER_FLEET_SIZE_HISTORY
WHERE CARRIER_REFERENCE_NUMBER = 481
AND TO_DATE(Fleet_Size_Effective_TO_Date,'DD-MON-YYYY') >=
TO_DATE(ADD_MONTHS(SYSDATE, -12),'DD-MON-YYYY')
AND TRUNC(Fleet_Size_Effective_From_Date) <=
TO_CHAR(SYSDATE,'DD-MON-YYYY')
ORDER BY CARRIER_REFERENCE_NUMBER,
Fleet_Size_Effective_From_Date,
Fleet_Size_Effective_To_Date,
CURRENT_FLEET_SIZE

Statement #1 returns 13 records....statement #2 returns 5 records.

Both Fleet_Size_Effective_TO_Date and Fleet_Size_Effective_From_Date
are of a DATE datatype. I am trying to restrict the query to the
sysdate as an end date, and sysdate - 12 months as a start date.
What's wrong with my date math?
Any input into this would be greatly appreciated.

Reply With Quote
  #2  
Old   
Frank van Bortel
 
Posts: n/a

Default Re: SQL - Date Math question - 03-08-2005 , 07:57 AM






Alex wrote:
Quote:
I have two SQL statements:

Statement #1

SELECT CARRIER_REFERENCE_NUMBER,
CURRENT_FLEET_SIZE,
trunc(Fleet_Size_Effective_From_Date),
trunc(Fleet_Size_Effective_To_Date)
FROM CAPS.CARRIER_FLEET_SIZE_HISTORY
WHERE CARRIER_REFERENCE_NUMBER = 481
AND trunc(Fleet_Size_Effective_TO_Date) >=
TO_DATE('24-FEB-2003') AND trunc(Fleet_Size_Effective_From_Date) <=
TO_DATE('24-FEB-2004')
ORDER BY CARRIER_REFERENCE_NUMBER,
Fleet_Size_Effective_From_Date,
Fleet_Size_Effective_To_Date,
CURRENT_FLEET_SIZE

************************************************** ****************************
Statement #2

SELECT CARRIER_REFERENCE_NUMBER,
CURRENT_FLEET_SIZE,
TRUNC(Fleet_Size_Effective_From_Date) AS START_DATE,
TRUNC(Fleet_Size_Effective_To_Date) AS END_DATE
FROM CAPS.CARRIER_FLEET_SIZE_HISTORY
WHERE CARRIER_REFERENCE_NUMBER = 481
AND TO_DATE(Fleet_Size_Effective_TO_Date,'DD-MON-YYYY') >=
TO_DATE(ADD_MONTHS(SYSDATE, -12),'DD-MON-YYYY')
AND TRUNC(Fleet_Size_Effective_From_Date) <=
TO_CHAR(SYSDATE,'DD-MON-YYYY')
ORDER BY CARRIER_REFERENCE_NUMBER,
Fleet_Size_Effective_From_Date,
Fleet_Size_Effective_To_Date,
CURRENT_FLEET_SIZE

Statement #1 returns 13 records....statement #2 returns 5 records.

Both Fleet_Size_Effective_TO_Date and Fleet_Size_Effective_From_Date
are of a DATE datatype. I am trying to restrict the query to the
sysdate as an end date, and sysdate - 12 months as a start date.
What's wrong with my date math?
Any input into this would be greatly appreciated.
Sysdate is today - not Feb, 24!
Also, the second query compares dates with characters (you
do use TO_CHAR(SYSDATE...)) and may thus not perform as well
--
Regards,
Frank van Bortel


Reply With Quote
Reply




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.3
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.