Обсуждение: parts of date_part()
Hi there, Well, I've done some digging in the FAQ, the user documentation, and the man pages, so I hope nobody screams 'RTFM' on this question, but I suppose you're welcome to if it was somewhere obvious and I missed it. I'm looking for a complete list of the different "date parts" that I can use to extract information about a given datetime value in a table. For instance, I know that I can do: select date_part('day', field_name) from table ; and that will give me the day of the month of that date. I've also played with some other things, like 'month' and 'year'. However, I was wondering if there was a way to obtain the name of the day (Tuesday, Wednesday, etc.) using this function, among other things. I tried select date_part('weekday', field_name) from table ; but that didn't work. Really, what I need is a list of types that arguments that I can use for the first paramater of this function. If this isn't documented now, and someone has answers, I'd be happy to write something up for the FAQ or the user's manual. TIA.... eric _______________________ Eric McKeown ericm@palaver.net http://www.palaver.net
played with some other things, like 'month' and 'year'. However, I was wondering if there was a way to obtain the name of the day (Tuesday, Wednesday, etc.) using this function, among other things. I tried Try select date_part ('dow', field_name) from table ; This gives numbers 0-6 => Sunday-Saturday (I think). I suppose that could be joined with another table with names. Is there a more direct way to get the names? Cheers, Brook
At 2:33 +0300 on 25/8/98, Eric McKeown wrote: > > Well, I've done some digging in the FAQ, the user documentation, and the > man pages, so I hope nobody screams 'RTFM' on this question, but I suppose > you're welcome to if it was somewhere obvious and I missed it. > > I'm looking for a complete list of the different "date parts" that I can > use to extract information about a given datetime value in a table. Actually, it is an RTFM... From the manpage of pgbuiltin (my postgres version is 6.2.1): For the date_part() and date_trunc() functions, arguments can be `year', `month', `day', `hour', `minute', and `second', as well as the more specialized quantities `decade', `century', `millenium', `millisecond', and `microsecond'. date_part() allows `dow' to return day of week and `epoch' to return seconds since 1970 for datetime and 'epoch' to return total elapsed seconds for timespan. So... Herouth -- Herouth Maoz, Internet developer. Open University of Israel - Telem project http://telem.openu.ac.il/~herutma
According to Herouth Maoz: > > Actually, it is an RTFM... > > >From the manpage of pgbuiltin (my postgres version is 6.2.1): > > For the date_part() and date_trunc() functions, arguments > can be `year', `month', `day', `hour', `minute', and > `second', as well as the more specialized quantities > `decade', `century', `millenium', `millisecond', and > `microsecond'. date_part() allows `dow' to return day of > week and `epoch' to return seconds since 1970 for datetime > and 'epoch' to return total elapsed seconds for timespan. Is there any documentation (or is any needed) for the equivalent functions mapped to their SQL92 "extract (field from value)" syntax? Since I just ran across: psql=> select date_part('month','01-01-1998'::date); date_part --------- 12 (1 row) and the extract() does the same in this case, I'm being a little cautious... Les Mikesell les@mcs.com
At 19:53 +0300 on 26/8/98, Leslie Mikesell wrote: > Since I just ran across: > psql=> select date_part('month','01-01-1998'::date); > date_part > --------- > 12 > (1 row) > and the extract() does the same in this case, I'm being a little cautious... As a rule, I never use the type DATE, only DATETIME. I've seen too many problems with timezones with the shorter types, and the functions supporting them are too few for me to be comfortable with them. My guess as to the reason of the above - and the Gurus may correct me if I'm wrong - is that the DATE type does not contain time information. But then, it is converted internally to DATETIME or milliseconds-since-epoch for the sake of the function. This conversion involves your timezone, and since you timezone is probably negative, a few hours before 1998-01-01 is definitely December. In my Postgres (Israeli Daylight Time): testing=> select date_part( 'month', '01-01-1998'::date ); date_part --------- 1 (1 row) Then again, it could be a platform problem. Have all the regression tests passed correctly when you compiled? Herouth -- Herouth Maoz, Internet developer. Open University of Israel - Telem project http://telem.openu.ac.il/~herutma