English 中文(简体)
How to store only time; not date and time?
原标题:

In one field I need to store not a datetime pair, i.e. a standard Oracle date.

01/10/2009 22:10:39

But time only

22:10:39

I think that save disk space (I have 2 million rows) or provide faster processing.

最佳回答

You could try the INTERVAL DAY TO SECOND data type but it won t save you any disk space ... it is very suitable for this purpose though.

create table t1 (time_of_day interval day (0) to second(0));

insert into t1 values (TO_DSINTERVAL( 0 23:59:59 ));

select date  2009-05-13 +time_of_day
from   t1;

11 bytes though.

问题回答

Your best bet would probably be storing "seconds since midnight" as a number field.

SELECT to_char( SYSDATE,  SSSSS  ) FROM dual;

You can extract the time from a date as a string like this:

to_char(sysdate, HH.MI.SS )

but there is no time-only data type that will help you save space.

you can use:

TO_CHAR(<DATE_COLUMN>,  <TIME_FORMAT> );

example

TO_CHAR(SYSDATE,  HH24:MI:SS );

for time format you can check in here

You would save a few Mb of disk space(which is nothing nowadays) and you would gain next to nothing in performance.

You could use a column of NUMBER type for storing the number of seconds since midnight as suggested, just don t forget about the constraints.
(You d probably use NUMBER(5, 0) which uses 1-3 bytes depending on the stored value, instead of a constant 7 bytes used by a DATE column)





相关问题
Export tables from SQL Server to be imported to Oracle 10g

I m trying to export some tables from SQL Server 2005 and then create those tables and populate them in Oracle. I have about 10 tables, varying from 4 columns up to 25. I m not using any constraints/...

Connecting to Oracle 10g with ODBC from Excel VBA

The following code works. the connection opens fine but recordset.recordCount always returns -1 when there is data in the table. ANd If I try to call any methods/properties on recordset it crashes ...

How to make a one to one left outer join?

I was wondering, is there a way to make a kind of one to one left outer join: I need a join that matches say table A with table B, for each record on table A it must search for its pair on table B, ...

Insert if not exists Oracle

I need to be able to run an Oracle query which goes to insert a number of rows, but it also checks to see if a primary key exists and if it does, then it skips that insert. Something like: INSERT ALL ...

How can I store NULLs in NOT NULL field?

I just came across NULL values in NOT-NULL fields in our test database. How could they get there? I know that NOT-NULL constraints can be altered with NOVALIDATE clause, but that would change table s ...

Type reference scope

I m studying databases and am currently working on a object-relational DB project and I ve encountered a small problem with the number of possible constraints in an object table. I m using "Database ...

OracleParameter and DBNull.Value

we have a table in an Oracle Database which contains a column with the type Char(3 Byte). Now we use a parameterized sql to select some rows with a DBNull.Value and it doesn t work: OracleCommand ...

热门标签