Re: help: now() + N is now failing!
От | Stephan Szabo |
---|---|
Тема | Re: help: now() + N is now failing! |
Дата | |
Msg-id | 20030729102452.P92021-100000@megazone.bigpanda.com обсуждение исходный текст |
Ответ на | Re: help: now() + N is now failing! (Dmitry Tkach <dmitry@openratings.com>) |
Ответы |
Re: help: now() + N is now failing!
|
Список | pgsql-novice |
On Tue, 29 Jul 2003, Dmitry Tkach wrote: > Stephan Szabo wrote: > > >On Tue, 29 Jul 2003, Dmitry Tkach wrote: > > > > > > > >>Yeah... Looks weird. > >>For some reason, even date_pli(now(), 2) doesn't work any more - you > >>have to do date_pli(now()::date,2) > >>I guess, the now()+2 has the same problem - for some reason, it fails to > >>coerce timestamptz into date automatically :-( > >>Why is that? There is only one function called date_pli(), and there is > >>an unambigous conversion date(timestamptz)... Why does it now force the > >>user to cast explicitly??? > >> > >> > > > >It's not an implicit cast any longer (see pg_cast). Implicit casts often > >result in unexpected behavior. > > > >For example, what should now()+2 mean? Converting to date and adding two > >days is fairly wierd behavior, I'd much more expect it to say add 2 > >seconds or error. now() + interval '2 days' or cast(now() as date)+2 both > >express the intent of adding 2 days much better. > > > > > Ok, granted that, but what's wrong with date_pli (now(), 2)? It's a similar issue. As a potential counter example, what about date_pli('foo', 2) or date_pli(inet '1.1.1.1', 2)? There's a cast from text->date and a cast inet->text. If you allow downcasts and arbitrary casts you can get some really odd behavior.
В списке pgsql-novice по дате отправления: