Re: Is there a better way to do this?
От | D. Dante Lorenso |
---|---|
Тема | Re: Is there a better way to do this? |
Дата | |
Msg-id | 46D4BCCA.4050307@lorenso.com обсуждение исходный текст |
Ответ на | Re: Is there a better way to do this? (Michael Glaesemann <grzm@seespotcode.net>) |
Список | pgsql-general |
Michael Glaesemann wrote: > On Aug 28, 2007, at 17:22 , D. Dante Lorenso wrote: >> Michael Glaesemann wrote: >>> On Aug 28, 2007, at 16:55 , D. Dante Lorenso wrote: >>>> RETURN time + (days || ' days')::INTERVAL; >>> It's bad practice to concatenate like this. Use time + days * >>> interval '1 day' and be done with it. >> >> Why? Is this functionality expected to break in the future or has >> unexpected side effects? Is it less clear or less efficient? Who >> declared it bad practice and where can I read that documentation? > > It's generally bad practice to interpolate unnecessarily. You're right, > in this case you're probably safe from this particular case ever > changing. I personally find it less clear (though clarity is often in > the eye of the beholder). time + * interval '1 day' is to me a clearer > expression of what you're doing: add this multiple of days to the time. Something in my just doesn't want to trust that: 30 * interval '1 day' == interval '30 days' Intervals are magical things unlike int and text. Doing multiplication on a magical thing is scary, but waiting until the end before applying the magic just *feels* safer. I do like your syntax, though. There are less parentheses. Maybe I can warm up to it ;-) -- Dante
В списке pgsql-general по дате отправления: