aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils/adt/timestamp.c
diff options
context:
space:
mode:
authorThomas G. Lockhart <lockhart@fourpalms.org>2001-01-18 07:22:43 +0000
committerThomas G. Lockhart <lockhart@fourpalms.org>2001-01-18 07:22:43 +0000
commit6acdebbd3a6e516e26b9d5ff7c51e51802e7345b (patch)
treefb6f50e911633a34618a8fdcd5c758ae93046f53 /src/backend/utils/adt/timestamp.c
parent6439de1752db399c862f9f440e5ec15ef5243592 (diff)
downloadpostgresql-6acdebbd3a6e516e26b9d5ff7c51e51802e7345b.tar.gz
postgresql-6acdebbd3a6e516e26b9d5ff7c51e51802e7345b.zip
Fix up "Postgres-style" time interval representation when fields have
mixed-signs. Previous effort left way too many minus signs, and was at least as broken as the one before that :( Clean up "ISO-style" time interval representation to omit zero fields if there is at least one non-zero field. Supress some leading plus signs when not necessary for clarity. Replace every #ifdef __CYGWIN__ block with a cleaner TIMEZONE_GLOBAL macro defined in datetime.h.
Diffstat (limited to 'src/backend/utils/adt/timestamp.c')
-rw-r--r--src/backend/utils/adt/timestamp.c27
1 files changed, 6 insertions, 21 deletions
diff --git a/src/backend/utils/adt/timestamp.c b/src/backend/utils/adt/timestamp.c
index 144aec0cbe7..dd3a5f47e15 100644
--- a/src/backend/utils/adt/timestamp.c
+++ b/src/backend/utils/adt/timestamp.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/timestamp.c,v 1.42 2001/01/17 16:46:56 thomas Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/timestamp.c,v 1.43 2001/01/18 07:22:36 thomas Exp $
*
*-------------------------------------------------------------------------
*/
@@ -324,9 +324,10 @@ timestamp2tm(Timestamp dt, int *tzp, struct tm * tm, double *fsec, char **tzn)
/* XXX HACK
* Argh! My Linux box puts in a 1 second offset for dates less than 1970
* but only if the seconds field was non-zero. So, don't copy the seconds
- * field and instead carry forward from the original - tgl 97/06/18
+ * field and instead carry forward from the original - thomas 97/06/18
* Note that GNU/Linux uses the standard freeware zic package as do
* many other platforms so this may not be GNU/Linux/ix86-specific.
+ * Still shows a problem on my up to date Linux box - thomas 2001-01-17
*/
tm->tm_sec = tx->tm_sec;
#endif
@@ -340,11 +341,7 @@ timestamp2tm(Timestamp dt, int *tzp, struct tm * tm, double *fsec, char **tzn)
if (tzn != NULL)
*tzn = (char *) tm->tm_zone;
# elif defined(HAVE_INT_TIMEZONE)
-# ifdef __CYGWIN__
- *tzp = ((tm->tm_isdst > 0) ? (_timezone - 3600) : _timezone);
-# else
- *tzp = ((tm->tm_isdst > 0) ? (timezone - 3600) : timezone);
-# endif
+ *tzp = ((tm->tm_isdst > 0) ? (TIMEZONE_GLOBAL - 3600) : TIMEZONE_GLOBAL);
if (tzn != NULL)
*tzn = tzname[(tm->tm_isdst > 0)];
# endif
@@ -1084,13 +1081,7 @@ timestamp_pl_span(PG_FUNCTION_ARGS)
# if defined(HAVE_TM_ZONE)
tz = -(tm->tm_gmtoff); /* tm_gmtoff is Sun/DEC-ism */
# elif defined(HAVE_INT_TIMEZONE)
-
-# ifdef __CYGWIN__
- tz = ((tm->tm_isdst > 0) ? (_timezone - 3600) : _timezone);
-# else
- tz = ((tm->tm_isdst > 0) ? (timezone - 3600) : timezone);
-# endif
-
+ tz = ((tm->tm_isdst > 0) ? (TIMEZONE_GLOBAL - 3600) : TIMEZONE_GLOBAL);
# endif
#else /* not (HAVE_TM_ZONE || HAVE_INT_TIMEZONE) */
@@ -1733,13 +1724,7 @@ timestamp_trunc(PG_FUNCTION_ARGS)
# if defined(HAVE_TM_ZONE)
tz = -(tm->tm_gmtoff); /* tm_gmtoff is Sun/DEC-ism */
# elif defined(HAVE_INT_TIMEZONE)
-
-# ifdef __CYGWIN__
- tz = ((tm->tm_isdst > 0) ? (_timezone - 3600) : _timezone);
-# else
- tz = ((tm->tm_isdst > 0) ? (timezone - 3600) : timezone);
-# endif
-
+ tz = ((tm->tm_isdst > 0) ? (TIMEZONE_GLOBAL - 3600) : TIMEZONE_GLOBAL);
# endif
#else /* not (HAVE_TM_ZONE || HAVE_INT_TIMEZONE) */