@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $ Header : / cvsroot / pgsql / src / backend / utils / adt / timestamp . c , v 1.78 2003 / 02 / 22 05 : 57 : 45 tgl Exp $
* $ Header : / cvsroot / pgsql / src / backend / utils / adt / timestamp . c , v 1.79 2003 / 02 / 27 21 : 36 : 58 tgl Exp $
*
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
*/
@ -2865,13 +2865,26 @@ timestamp_part(PG_FUNCTION_ARGS)
switch ( val )
{
case DTK_EPOCH :
{
int tz ;
TimestampTz timestamptz ;
/* convert to timestamptz to produce consistent results */
if ( timestamp2tm ( timestamp , NULL , tm , & fsec , NULL ) ! = 0 )
elog ( ERROR , " Unable to convert TIMESTAMP to TIMESTAMP WITH TIME ZONE (tm) " ) ;
tz = DetermineLocalTimeZone ( tm ) ;
if ( tm2timestamp ( tm , fsec , & tz , & timestamptz ) ! = 0 )
elog ( ERROR , " Unable to convert TIMESTAMP to TIMESTAMP WITH TIME ZONE " ) ;
# ifdef HAVE_INT64_TIMESTAMP
result = ( ( timestamp - SetEpochTimestamp ( ) ) / 1000000e0 ) ;
result = ( ( timestamptz - SetEpochTimestamp ( ) ) / 1000000e0 ) ;
# else
result = timestamp - SetEpochTimestamp ( ) ;
result = timestamptz - SetEpochTimestamp ( ) ;
# endif
break ;
}
case DTK_DOW :
if ( timestamp2tm ( timestamp , NULL , tm , & fsec , NULL ) ! = 0 )
elog ( ERROR , " Unable to encode TIMESTAMP " ) ;