Thread: datetime query issue
I'm not sure how to go about this: I want to find all rows with a timestamp between, say 6 a.m. and 10 p.m. for any number of days. The column format is datetime. How do I extract the 'time of the day' information from this column? What I can think of is to create a view for every single day where datetime is > 6 and < 10 and then another query on all views together but that doesn't sound very elegant and would be a real memory hog for a large number of days. Any better ideas? Thanks Frank
um, this was probably unintelligible. this is the table: +----------------------------------+----------------------------------+-------+ | Field | Type | Length| +----------------------------------+----------------------------------+-------+ | source_numeric | int8 not null | 8 | | destination_numeric | int8 not null | 8 | | source | text not null | var | | destination | text not null | var | | bytes | int8 not null | 8 | | date | datetime | 8 | +----------------------------------+----------------------------------+-------+ every hour, a set of rows is added to this table with the current timestamp on each row. i guess i need a function to extract the time from datetime. date_trunc may be what i am looking for but i couldn't find information in the documentation as to how to use these functions. On Sat, Aug 28, 1999 at 03:35:07PM +0200, Frank Joerdens wrote: > I'm not sure how to go about this: I want to find all rows with a timestamp > between, say 6 a.m. and 10 p.m. for any number of days. The column format is > datetime. How do I extract the 'time of the day' information from this > column? What I can think of is to create a view for every single day where datetime > is > 6 and < 10 and then another query on all views together but that doesn't sound > very elegant and would be a real memory hog for a large number of days. > > Any better ideas? > > Thanks > > Frank > > > ************
Frank, Use the date_part function to extract the hour and then find the records which match. E.g. select id,date_part('hour', mydate) from table1 where date_part('hour', mydate) >= 6 and date_part('hour', mydate) <=22; Troy > > I'm not sure how to go about this: I want to find all rows with a timestamp > between, say 6 a.m. and 10 p.m. for any number of days. The column format is > datetime. How do I extract the 'time of the day' information from this > column? What I can think of is to create a view for every single day where datetime > is > 6 and < 10 and then another query on all views together but that doesn't sound > very elegant and would be a real memory hog for a large number of days. > > Any better ideas? > > Thanks > > Frank > > > ************ > >
Try this: select extract(year from date) from tablename; select extract(month from date) from tablename; select extract(day from date) from tablename; select extract(hour from date) from tablename; select extract(minute from date) from tablename; select extract(minute from date) from tablename; select extract(second from date) from tablename; José Frank Joerdens ha scritto: > um, this was probably unintelligible. this is the table: > > +----------------------------------+----------------------------------+-------+ > | Field | Type | Length| > +----------------------------------+----------------------------------+-------+ > | source_numeric | int8 not null | 8 | > | destination_numeric | int8 not null | 8 | > | source | text not null | var | > | destination | text not null | var | > | bytes | int8 not null | 8 | > | date | datetime | 8 | > +----------------------------------+----------------------------------+-------+ > > every hour, a set of rows is added to this table with the current timestamp on > each row. i guess i need a function to extract the time from datetime. date_trunc > may be what i am looking for but i couldn't find information in the documentation > as to how to use these functions. > > On Sat, Aug 28, 1999 at 03:35:07PM +0200, Frank Joerdens wrote: > > I'm not sure how to go about this: I want to find all rows with a timestamp > > between, say 6 a.m. and 10 p.m. for any number of days. The column format is > > datetime. How do I extract the 'time of the day' information from this > > column? What I can think of is to create a view for every single day where datetime > > is > 6 and < 10 and then another query on all views together but that doesn't sound > > very elegant and would be a real memory hog for a large number of days. > > > > Any better ideas? > > > > Thanks > > > > Frank > > > > > > ************ > > ************