diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y
index 39a2849eba..cbd401a716 100644
--- a/src/backend/parser/gram.y
+++ b/src/backend/parser/gram.y
@@ -13148,7 +13148,7 @@ ConstInterval:
 opt_timezone:
 			WITH_LA TIME ZONE						{ $$ = true; }
 			| WITHOUT TIME ZONE						{ $$ = false; }
-			| /*EMPTY*/								{ $$ = false; }
+			| /*EMPTY*/								{ $$ = default_timestamp_with_timezone; }
 		;
 
 opt_interval:
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index cb3fa85892..e7a26e18a1 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -31,6 +31,8 @@
 #include "utils/memutils.h"
 #include "utils/tzparser.h"
 
+bool	default_timestamp_with_timezone = false;
+
 static int	DecodeNumber(int flen, char *field, bool haveTextMonth,
 						 int fmask, int *tmask,
 						 struct pg_tm *tm, fsec_t *fsec, bool *is2digits);
diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c
index a2e0f8de7e..d70185d74c 100644
--- a/src/backend/utils/misc/guc.c
+++ b/src/backend/utils/misc/guc.c
@@ -2098,6 +2098,15 @@ static struct config_bool ConfigureNamesBool[] =
 		NULL, NULL, NULL
 	},
 
+	{
+		{"default_timestamp_with_timezone", PGC_USERSET, CLIENT_CONN_STATEMENT,
+			gettext_noop("Whether to take TIMESTAMP to mean TIMESTAMP WITH TIME ZONE, or not."),
+		},
+		&default_timestamp_with_timezone,
+		false,
+		NULL, NULL, NULL
+	},
+
 	{
 		{"data_sync_retry", PGC_POSTMASTER, ERROR_HANDLING_OPTIONS,
 			gettext_noop("Whether to continue running after a failure to sync data files."),
diff --git a/src/include/utils/datetime.h b/src/include/utils/datetime.h
index b56086c9d6..d62a39520a 100644
--- a/src/include/utils/datetime.h
+++ b/src/include/utils/datetime.h
@@ -22,6 +22,7 @@
 /* this struct is declared in utils/tzparser.h: */
 struct tzEntry;
 
+extern bool    default_timestamp_with_timezone;
 
 /* ----------------------------------------------------------------
  *				time types + support macros
diff --git a/src/test/regress/expected/timestamptz.out b/src/test/regress/expected/timestamptz.out
index 990c4eddf1..74ae1ac097 100644
--- a/src/test/regress/expected/timestamptz.out
+++ b/src/test/regress/expected/timestamptz.out
@@ -2929,3 +2929,21 @@ select * from tmptz where f1 at time zone 'utc' = '2017-01-18 00:00';
  Tue Jan 17 16:00:00 2017 PST
 (1 row)
 
+BEGIN;
+CREATE TABLE tzz_test (col1 TIMESTAMP);
+\d tzz_test
+                        Table "public.tzz_test"
+ Column |            Type             | Collation | Nullable | Default 
+--------+-----------------------------+-----------+----------+---------
+ col1   | timestamp without time zone |           |          | 
+
+DROP TABLE tzz_test;
+SET LOCAL default_timestamp_with_timezone = true;
+CREATE TABLE tzz_test (col1 TIMESTAMP);
+\d tzz_test
+                      Table "public.tzz_test"
+ Column |           Type           | Collation | Nullable | Default 
+--------+--------------------------+-----------+----------+---------
+ col1   | timestamp with time zone |           |          | 
+
+ROLLBACK;
diff --git a/src/test/regress/sql/timestamptz.sql b/src/test/regress/sql/timestamptz.sql
index b18821de53..1b323ba112 100644
--- a/src/test/regress/sql/timestamptz.sql
+++ b/src/test/regress/sql/timestamptz.sql
@@ -551,3 +551,12 @@ insert into tmptz values ('2017-01-18 00:00+00');
 explain (costs off)
 select * from tmptz where f1 at time zone 'utc' = '2017-01-18 00:00';
 select * from tmptz where f1 at time zone 'utc' = '2017-01-18 00:00';
+
+BEGIN;
+CREATE TABLE tzz_test (col1 TIMESTAMP);
+\d tzz_test
+DROP TABLE tzz_test;
+SET LOCAL default_timestamp_with_timezone = true;
+CREATE TABLE tzz_test (col1 TIMESTAMP);
+\d tzz_test
+ROLLBACK;
