diff options
Diffstat (limited to 'src/backend/utils/adt/timestamp.c')
-rw-r--r-- | src/backend/utils/adt/timestamp.c | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/backend/utils/adt/timestamp.c b/src/backend/utils/adt/timestamp.c index 50ef8976bed..6ff7385233e 100644 --- a/src/backend/utils/adt/timestamp.c +++ b/src/backend/utils/adt/timestamp.c @@ -1286,6 +1286,50 @@ GetCurrentTimestamp(void) } /* + * GetCurrentIntegerTimestamp -- get the current operating system time as int64 + * + * Result is the number of milliseconds since the Postgres epoch. If compiled + * with --enable-integer-datetimes, this is identical to GetCurrentTimestamp(), + * and is implemented as a macro. + */ +#ifndef HAVE_INT64_TIMESTAMP +int64 +GetCurrentIntegerTimestamp(void) +{ + int64 result; + struct timeval tp; + + gettimeofday(&tp, NULL); + + result = (int64) tp.tv_sec - + ((POSTGRES_EPOCH_JDATE - UNIX_EPOCH_JDATE) * SECS_PER_DAY); + + result = (result * USECS_PER_SEC) + tp.tv_usec; + + return result; +} +#endif + +/* + * IntegetTimestampToTimestampTz -- convert an int64 timestamp to native format + * + * When compiled with --enable-integer-datetimes, this is implemented as a + * no-op macro. + */ +#ifndef HAVE_INT64_TIMESTAMP +TimestampTz +IntegerTimestampToTimestampTz(int64 timestamp) +{ + TimestampTz result; + + result = timestamp / USECS_PER_SEC; + result += (timestamp % USECS_PER_SEC) / 1000000.0; + + return result; +} +#endif + +/* * TimestampDifference -- convert the difference between two timestamps * into integer seconds and microseconds * |