mirror of
https://github.com/postgres/postgres.git
synced 2025-07-28 23:42:10 +03:00
Clean up "stopgap" implementation of timestamptz_to_str().
Use correct type for "result", fix bogus strftime argument, don't use unnecessary static variables, improve comments. Andres Freund and Tom Lane
This commit is contained in:
@ -41,21 +41,26 @@ timestamptz_to_time_t(TimestampTz t)
|
||||
|
||||
/*
|
||||
* Stopgap implementation of timestamptz_to_str that doesn't depend on backend
|
||||
* infrastructure.
|
||||
* infrastructure. This will work for timestamps that are within the range
|
||||
* of the platform time_t type. (pg_time_t is compatible except for possibly
|
||||
* being wider.)
|
||||
*
|
||||
* XXX the return value points to a static buffer, so beware of using more
|
||||
* than one result value concurrently.
|
||||
*
|
||||
* XXX: The backend timestamp infrastructure should instead be split out and
|
||||
* moved into src/common.
|
||||
* moved into src/common. That's a large project though.
|
||||
*/
|
||||
const char *
|
||||
timestamptz_to_str(TimestampTz dt)
|
||||
{
|
||||
static char buf[MAXDATELEN + 1];
|
||||
static char ts[MAXDATELEN + 1];
|
||||
static char zone[MAXDATELEN + 1];
|
||||
pg_time_t result = timestamptz_to_time_t(dt);
|
||||
char ts[MAXDATELEN + 1];
|
||||
char zone[MAXDATELEN + 1];
|
||||
time_t result = (time_t) timestamptz_to_time_t(dt);
|
||||
struct tm *ltime = localtime(&result);
|
||||
|
||||
strftime(ts, sizeof(zone), "%Y-%m-%d %H:%M:%S", ltime);
|
||||
strftime(ts, sizeof(ts), "%Y-%m-%d %H:%M:%S", ltime);
|
||||
strftime(zone, sizeof(zone), "%Z", ltime);
|
||||
|
||||
#ifdef HAVE_INT64_TIMESTAMP
|
||||
|
Reference in New Issue
Block a user