在数据库中设置日期格式

时间:2012-04-24 10:29:56

标签: sql oracle oracle10g

我在Oracle 10g XE中工作。我在Oracle SQL Developer中有两个数据库。我正在执行此查询..

SELECT SCHEDULE_ID, START_DATE, END_DATE 
  FROM SCHEDULE
 WHERE C_ID IN (5781) 
   AND START_DATE >=TO_DATE ('1/29/2012','MM/DD/YYYY') 
   AND END_DATE <=TO_DATE ('4/14/2012','MM/DD/YYYY')

在第一个数据库中,数据正确返回。我在第二个数据库中执行相同的查询,但它不返回任何值。但数据见表。

我执行了查询

SELECT dump(START_DATE), dump(END_DATE) FROM SCHEDULE WHERE C_ID=5026 

我得到的结果是,

DUMP(START_DATE ) -> Typ=12 Len=7: 100,112,2,7,1,1,1 
DUMP(END_DATE) -> Typ=12 Len=7: 100,112,2,13,1,1,1

并且重要的是,我不应该修改查询..因为它在所有其他数据库中工作...

1 个答案:

答案 0 :(得分:4)

您的陈述:

SELECT dump(START_DATE), dump(END_DATE) FROM SCHEDULE WHERE C_ID=5026

我得到的结果是,

DUMP(START_DATE ) -> Typ=12 Len=7: 100,112,2,7,1,1,1 and DUMP(END_DATE) -> Typ=12 Len=7: 100,112,2,13,1,1,1

我的评论:

100,112,2,7,1,1,1

100,112,2,13,1,1,1

这导致YYYY-MM-DD

Startdate    0012-02-07 00:00:00
Enddate      0012-02-13 00:00:00

所以你大约2000年了。

日期数据类型的格式为

byte 1 - century (excess 100)  100 - 100 = 00
byte 2 - year (excess 100)  112 - 100 = 12
byte 3 - month = 2
byte 4 - day = 7
byte 5 - hour (excess 1) 1 - 1 = 0
byte 6 - minute (excess 1) 1 - 1 = 0
byte 7 - seconds (excess 1) 1 - 1 = 0