Thread: timestamp(0) vs. timestamp
Hi all! This may seem unimportant, but I still would like to know. I have columns for timestamps without fractional digits, so I could define them as timestamp(0). However, there is no way fractions could ever enter anyway, because triggers and / or checks guarantee values without fractional seconds. Is it advantageous to define the column as timestamp(0) or simply as timestamp? Does the query planner or any other part of the RDBMS profit from the additional information in the definition? Or do I just create an overhead of useless checks or conversions (however small)? In a scenario like that, what would be (however slightly) preferable: CREATE TABLE x ( ... log_in timestamp(0) without time zone NOT NULL DEFAULT (now())::timestamp without time zone or log_in timestamp without time zone NOT NULL DEFAULT (now())::timestamp(0) without time zone or log_in timestamp(0) without time zone NOT NULL DEFAULT (now())::timestamp(0) without time zone TIA Erwin Brandstetter
Erwin Brandstetter <brsaweda@gmail.com> writes: > Hi all! > This may seem unimportant, but I still would like to know. > I have columns for timestamps without fractional digits, so I could > define them as timestamp(0). > However, there is no way fractions could ever enter anyway, because > triggers and / or checks guarantee values without fractional seconds. > Is it advantageous to define the column as timestamp(0) or simply as > timestamp? > Does the query planner or any other part of the RDBMS profit from the > additional information in the definition? > Or do I just create an overhead of useless checks or conversions > (however small)? There's no advantage to the system from knowing that, but consider that having timestamp_in force the values to be nonfractional is likely to be faster than having logic in a trigger to do it. regards, tom lane
On 27.04.2011 19:36, Tom Lane wrote: > Erwin Brandstetter<brsaweda@gmail.com> writes: >> Hi all! >> This may seem unimportant, but I still would like to know. >> I have columns for timestamps without fractional digits, so I could >> define them as timestamp(0). >> However, there is no way fractions could ever enter anyway, because >> triggers and / or checks guarantee values without fractional seconds. >> Is it advantageous to define the column as timestamp(0) or simply as >> timestamp? >> Does the query planner or any other part of the RDBMS profit from the >> additional information in the definition? >> Or do I just create an overhead of useless checks or conversions >> (however small)? > There's no advantage to the system from knowing that, but consider that > having timestamp_in force the values to be nonfractional is likely to be > faster than having logic in a trigger to do it. > > regards, tom lane Thank you for the insight. Is there any kind of overhead for timestamp_in due to the precision modifier - if non-fractional values are given? Regards Erwin Brandstetter