[libgda/1-evaluate-the-deprecation-of-gdatimestamp] Removed GdaTimestamp API in favor of GDateTime's one



commit 320985b7364370c8b828ec35c6356c9dc822adc6
Author: Daniel Espinosa <esodan gmail com>
Date:   Thu Jun 7 15:22:08 2018 -0500

    Removed GdaTimestamp API in favor of GDateTime's one

 libgda-report/engine/gda-report-engine.c           |   2 +-
 .../gdaui-data-cell-renderer-textual.c             |   2 +-
 libgda-ui/data-entries/gdaui-entry-common-time.c   | 129 +++++----
 libgda-ui/data-entries/gdaui-entry-timestamp.c     |   4 +-
 libgda-ui/gdaui-init.c                             |   4 +-
 libgda-xslt/sql_backend.c                          |   2 +-
 libgda/gda-data-model.c                            |  10 +-
 libgda/gda-init.c                                  |   2 +-
 libgda/gda-server-provider-extra.c                 |   2 +-
 libgda/gda-server-provider.c                       |   2 +-
 libgda/gda-set.c                                   |   6 +-
 libgda/gda-sql-builder.c                           |   8 +-
 libgda/gda-statement.c                             |   6 +-
 libgda/gda-util.c                                  |  23 +-
 libgda/gda-util.h                                  |   4 +-
 libgda/gda-value.c                                 | 294 +++------------------
 libgda/gda-value.h                                 |  22 +-
 libgda/handlers/gda-handler-time.c                 | 187 +++----------
 libgda/sqlite/gda-sqlite-provider.c                |  37 +--
 libgda/sqlite/gda-sqlite-recordset.c               |   4 +-
 libgda/sqlite/gda-sqlite-util.c                    |   2 +-
 libgda/sqlite/virtual/gda-vconnection-hub.c        |   6 +-
 libgda/sqlite/virtual/gda-vprovider-data-model.c   |   2 +-
 providers/ldap/gda-ldap-util.c                     |  94 +++----
 providers/mysql/gda-mysql-provider.c               |  33 ++-
 providers/mysql/gda-mysql-recordset.c              |  24 +-
 providers/postgres/gda-postgres-ddl.c              |   6 +-
 providers/postgres/gda-postgres-provider.c         |  25 +-
 providers/postgres/gda-postgres-recordset.c        |   6 +-
 providers/reuseable/mysql/gda-mysql-reuseable.c    |   4 +-
 .../reuseable/postgres/gda-postgres-reuseable.c    |   4 +-
 .../skel-implementation/capi/gda-capi-provider.c   |   6 +-
 providers/web/gda-web-provider.c                   |   2 +-
 testing/gdaui-test-data-entries.c                  |   4 +-
 tools/browser/ldap-browser/entry-properties.c      |  20 +-
 tools/misc/information-schema-types.c              |   2 +-
 36 files changed, 336 insertions(+), 654 deletions(-)
---
diff --git a/libgda-report/engine/gda-report-engine.c b/libgda-report/engine/gda-report-engine.c
index 2161f7eb3..5d4953975 100644
--- a/libgda-report/engine/gda-report-engine.c
+++ b/libgda-report/engine/gda-report-engine.c
@@ -1236,7 +1236,7 @@ value_to_node (GdaReportEngine *engine, G_GNUC_UNUSED RunContext *context, const
                        g_hash_table_insert (data_handlers, (gpointer) GDA_TYPE_USHORT, 
gda_handler_numerical_new ());
                        g_hash_table_insert (data_handlers, (gpointer) G_TYPE_STRING, gda_handler_string_new 
());
                        g_hash_table_insert (data_handlers, (gpointer) GDA_TYPE_TIME, gda_handler_time_new 
());
-                       g_hash_table_insert (data_handlers, (gpointer) GDA_TYPE_TIMESTAMP, 
gda_handler_time_new ());
+                       g_hash_table_insert (data_handlers, (gpointer) G_TYPE_DATE_TIME, gda_handler_time_new 
());
                        g_hash_table_insert (data_handlers, (gpointer) G_TYPE_CHAR, gda_handler_numerical_new 
());
                        g_hash_table_insert (data_handlers, (gpointer) G_TYPE_UCHAR, 
gda_handler_numerical_new ());
                        g_hash_table_insert (data_handlers, (gpointer) G_TYPE_ULONG, 
gda_handler_numerical_new ());
diff --git a/libgda-ui/data-entries/gdaui-data-cell-renderer-textual.c 
b/libgda-ui/data-entries/gdaui-data-cell-renderer-textual.c
index f18e8771f..907b9208b 100644
--- a/libgda-ui/data-entries/gdaui-data-cell-renderer-textual.c
+++ b/libgda-ui/data-entries/gdaui-data-cell-renderer-textual.c
@@ -707,7 +707,7 @@ gdaui_data_cell_renderer_textual_start_editing (GtkCellRenderer      *cell,
                entry = gdaui_entry_date_new (datacell->priv->dh);
        else if (datacell->priv->type == GDA_TYPE_TIME)
                entry = gdaui_entry_time_new (datacell->priv->dh);
-       else if (datacell->priv->type == GDA_TYPE_TIMESTAMP)
+       else if (datacell->priv->type == G_TYPE_DATE_TIME)
                entry = gdaui_entry_timestamp_new (datacell->priv->dh);
        else if (gdaui_entry_number_is_type_numeric (datacell->priv->type))
                entry = gdaui_entry_number_new (datacell->priv->dh, datacell->priv->type, 
datacell->priv->options);
diff --git a/libgda-ui/data-entries/gdaui-entry-common-time.c 
b/libgda-ui/data-entries/gdaui-entry-common-time.c
index e1c2f491d..03341da9a 100644
--- a/libgda-ui/data-entries/gdaui-entry-common-time.c
+++ b/libgda-ui/data-entries/gdaui-entry-common-time.c
@@ -400,13 +400,13 @@ icon_press_cb (GtkEntry *entry, GtkEntryIconPosition icon_pos, GdkEvent *event,
                                        }
                                }
                        }
-                       else if (type == GDA_TYPE_TIMESTAMP) {
-                               GdaTimestamp *ts;
-                               ts = (GdaTimestamp*) gda_value_get_timestamp (value);
+                       else if (type == G_TYPE_DATE_TIME) {
+                               GDateTime *ts;
+                               ts = g_value_get_boxed (value);
                                if (ts) {
-                                       year = gda_timestamp_get_year (ts);
-                                       month = gda_timestamp_get_month (ts) - 1;
-                                       day = gda_timestamp_get_day (ts);
+                                       year = g_date_time_get_year (ts);
+                                       month = g_date_time_get_month (ts) - 1;
+                                       day = g_date_time_get_day_of_month (ts);
                                        unset = FALSE;
                                }
                        }
@@ -471,7 +471,7 @@ date_day_selected (GtkCalendar *calendar, GdauiEntryCommonTime *mgtim)
         else
                 mtm.tm_year = year;
 
-       if (type == GDA_TYPE_TIMESTAMP) {
+       if (g_type_is_a (type, G_TYPE_DATE_TIME)) {
                /* get the time part back from current value */
                GValue *value = NULL;
                gchar *tmpstr;
@@ -485,10 +485,10 @@ date_day_selected (GtkCalendar *calendar, GdauiEntryCommonTime *mgtim)
 
                if (value && (G_VALUE_TYPE (value) != GDA_TYPE_NULL)) {
                        /* copy the 'fraction' and 'timezone' parts, we have not modified */
-                       GdaTimestamp *ets = (GdaTimestamp*) gda_value_get_timestamp (value);
-                       mtm.tm_hour = gda_timestamp_get_hour (ets);
-                       mtm.tm_min = gda_timestamp_get_minute (ets);
-                       mtm.tm_sec = gda_timestamp_get_second (ets);
+                       GDateTime *ets = g_value_get_boxed (value);
+                       mtm.tm_hour = g_date_time_get_hour (ets);
+                       mtm.tm_min = g_date_time_get_minute (ets);
+                       mtm.tm_sec = g_date_time_get_second (ets);
                }
                gda_value_free (value);
        }
@@ -497,7 +497,7 @@ date_day_selected (GtkCalendar *calendar, GdauiEntryCommonTime *mgtim)
        bufsize = sizeof (buffer) / sizeof (char);
        if (strftime (buffer, bufsize, "%x", &mtm) == 0)
                buffer [0] = 0;
-       else if (type == GDA_TYPE_TIMESTAMP) {
+       else if (type == G_TYPE_DATE_TIME) {
                char buffer2 [128];
                if (strftime (buffer2, bufsize, "%X", &mtm) == 0)
                        buffer [0] = 0;
@@ -608,7 +608,7 @@ create_entry (GdauiEntryWrapper *mgwrap)
        g_signal_connect_swapped (wid, "event-after",
                                  G_CALLBACK (event_after_cb), hb);
 
-       if ((type == G_TYPE_DATE) || (type == GDA_TYPE_TIMESTAMP))
+       if ((type == G_TYPE_DATE) || (type == G_TYPE_DATE_TIME))
                gtk_entry_set_icon_from_icon_name (GTK_ENTRY (wid),
                                                   GTK_ENTRY_ICON_PRIMARY, "x-office-calendar-symbolic");
 
@@ -683,7 +683,7 @@ real_set_value (GdauiEntryWrapper *mgwrap, const GValue *value)
                else 
                        gdaui_entry_set_text (GDAUI_ENTRY (mgtim->priv->entry), NULL);
        }
-       else if (type == GDA_TYPE_TIMESTAMP) {
+       else if (type == G_TYPE_DATE_TIME) {
                if (value) {
                        if (gda_value_is_null ((GValue *) value)) {
                                gdaui_entry_set_text (GDAUI_ENTRY (mgtim->priv->entry), NULL);
@@ -691,18 +691,28 @@ real_set_value (GdauiEntryWrapper *mgwrap, const GValue *value)
                                mgtim->priv->value_fraction = 0;
                        }
                        else {
-                               GdaTimestamp *gts;
-                               GdaTimestamp *copy;
-                               gts = (GdaTimestamp*) gda_value_get_timestamp (value);
-                               mgtim->priv->value_tz = fit_tz (gda_timestamp_get_timezone (gts));
-                               mgtim->priv->value_fraction = gda_timestamp_get_fraction (gts);
-
-                               copy = gda_timestamp_copy (gts);
-                               gda_timestamp_change_timezone (copy, mgtim->priv->displayed_tz);
+                               GDateTime *gts;
+                               GDateTime *copy;
+                               gts = g_value_get_boxed (value);
+                               mgtim->priv->value_tz = fit_tz (g_date_time_get_utc_offset (gts) / 1000000);
+                               mgtim->priv->value_fraction = (glong) ((g_date_time_get_seconds (gts) - 
g_date_time_get_second (gts)) * 1000000);
+
+                               gint itz = mgtim->priv->displayed_tz; // FIXME: This time zone is always 
positive
+                               if (itz < 0)
+                                       itz *= -1;
+                               gint h = itz/60/60;
+                               gint m = itz/60 - h*60;
+                               gint s = itz - h*60*60 - m*60;
+                               gchar *stz = g_strdup_printf ("%s%02d:%02d:%02d",
+                                                                                                             
                                          mgtim->priv->displayed_tz < 0 ? "-" : "+",
+                                                                                                             
                                          h, m, s);
+                               GTimeZone *tz = g_time_zone_new (stz);
+                               g_free (stz);
+                               copy = g_date_time_to_timezone (gts, tz);
 
                                GValue *copy_value;
-                               copy_value = g_new0 (GValue, 1);
-                               gda_value_set_timestamp (copy_value, copy);
+                               copy_value = gda_value_new (G_TYPE_DATE_TIME);
+                               g_value_set_boxed (copy_value, copy);
 
                                gchar *str;
                                str = gda_data_handler_get_str_from_value (dh, copy_value);
@@ -710,7 +720,7 @@ real_set_value (GdauiEntryWrapper *mgwrap, const GValue *value)
 
                                gdaui_entry_set_text (GDAUI_ENTRY (mgtim->priv->entry), str);
                                g_free (str);
-                               gda_timestamp_free (copy);
+                               g_date_time_unref (copy);
                        }
                }
                else
@@ -760,7 +770,7 @@ real_get_value (GdauiEntryWrapper *mgwrap)
                        gda_time_free (time_copy);
                }
        }
-       else if (type == GDA_TYPE_TIMESTAMP) {
+       else if (type == G_TYPE_DATE_TIME) {
                gchar *tmpstr;
 
                tmpstr = gdaui_formatted_entry_get_text (GDAUI_FORMATTED_ENTRY (mgtim->priv->entry));
@@ -771,13 +781,34 @@ real_get_value (GdauiEntryWrapper *mgwrap)
 
                if (value && (G_VALUE_TYPE (value) != GDA_TYPE_NULL)) {
                        /* copy the 'fraction' part, we have not modified */
-                       GdaTimestamp *gdatime;
-                       gdatime = (GdaTimestamp*) gda_value_get_timestamp (value);
-                       gda_timestamp_set_fraction (gdatime, mgtim->priv->value_fraction);
-                       gda_timestamp_set_timezone (gdatime, mgtim->priv->displayed_tz);
+                       GDateTime *gdatime = NULL;
+                       GDateTime *copy;
+                       g_value_take_boxed (value, gdatime);
+                       gint tzi = mgtim->priv->displayed_tz; // FIXME: This is always positive
+                       if (tzi < 0)
+                               tzi *= -1;
+                       gint h = tzi/60/60;
+                       gint m = tzi/60 - h*60;
+                       gint s = tzi - h*60*60 - m*60;
+                       gchar *stz = g_strdup_printf ("%s%02d:%02d:%02d",
+                                                                                                             
                                  mgtim->priv->displayed_tz < 0 ? "-" : "+",
+                                                                                                             
                                  h, m, s);
+                       GTimeZone *tz = g_time_zone_new (stz);
+                       g_free (stz);
+                       gdouble seconds = g_date_time_get_second (gdatime) + mgtim->priv->value_fraction / 
1000000.0;
+                       copy = g_date_time_new (tz,
+                                                                                                             
          g_date_time_get_year (gdatime),
+                                                                                                             
          g_date_time_get_month (gdatime),
+                                                                                                             
          g_date_time_get_day_of_month (gdatime),
+                                                                                                             
          g_date_time_get_hour (gdatime),
+                                                                                                             
          g_date_time_get_minute (gdatime),
+                                                                                                             
          seconds);
+                       g_time_zone_unref (tz);
+                       g_date_time_unref (gdatime);
+                       g_value_set_boxed (value, copy);
+                       /* FIXME: Original code change timezone, but before set a displayed one, so 
inconsistency
                        gda_timestamp_change_timezone (gdatime, mgtim->priv->value_tz);
-                       gda_value_set_timestamp (value, gdatime);
-                       g_free (gdatime);
+                        */
                }
        }
        else
@@ -862,7 +893,7 @@ entry_insert_func (G_GNUC_UNUSED GdauiFormattedEntry *fentry, gunichar insert_ch
                        real_set_value (GDAUI_ENTRY_WRAPPER (data), timvalue);
                        gda_value_free (timvalue);
                }
-               else if (type == GDA_TYPE_TIMESTAMP) {
+               else if (type == G_TYPE_DATE_TIME) {
                        /* set current date and time */
                        GValue *tsvalue;
                        //gchar *str;
@@ -882,10 +913,12 @@ entry_insert_func (G_GNUC_UNUSED GdauiFormattedEntry *fentry, gunichar insert_ch
                if (type == G_TYPE_DATE) {
                        date = (GDate*) g_value_get_boxed (value);
                }
-               else if (type == GDA_TYPE_TIMESTAMP) {
-                       GdaTimestamp *ts;
-                       ts = (GdaTimestamp*) gda_value_get_timestamp (value);
-                       date = g_date_new_dmy (gda_timestamp_get_day (ts), gda_timestamp_get_month (ts), 
gda_timestamp_get_year (ts));
+               else if (type == G_TYPE_DATE_TIME) {
+                       GDateTime *ts;
+                       ts = g_value_get_boxed (value);
+                       date = g_date_new_dmy (g_date_time_get_day_of_month (ts),
+                                                                                                             
   g_date_time_get_month (ts),
+                                                                                                             
   g_date_time_get_year (ts));
                }
 
                if (date) {
@@ -909,16 +942,22 @@ entry_insert_func (G_GNUC_UNUSED GdauiFormattedEntry *fentry, gunichar insert_ch
                                if (type == G_TYPE_DATE) {
                                        g_value_take_boxed (value, ndate);
                                }
-                               else if (type == GDA_TYPE_TIMESTAMP) {
-                                       GdaTimestamp *ts;
-                                       ts = (GdaTimestamp*) gda_timestamp_copy ((gpointer) 
gda_value_get_timestamp (value));
-                                       gda_timestamp_set_day (ts, g_date_get_day (ndate));
-                                       gda_timestamp_set_month (ts, g_date_get_month (ndate));
-                                       gda_timestamp_set_year (ts, g_date_get_year (ndate));
+                               else if (type == G_TYPE_DATE_TIME) {
+                                       GDateTime *dt = g_value_get_boxed (value);
+                                       GDateTime *ts;
+                                       GTimeZone *tz = g_time_zone_new 
(g_date_time_get_timezone_abbreviation (dt));
+                                       ts = g_date_time_new (tz,
+                                                                                                             
                  g_date_get_year (ndate),
+                                                                                                             
                  g_date_get_month (ndate),
+                                                                                                             
                  g_date_get_day (ndate),
+                                                                                                             
                  g_date_time_get_hour (dt),
+                                                                                                             
                  g_date_time_get_minute (dt),
+                                                                                                             
                  g_date_time_get_seconds (dt));
+
                                        g_date_free (date);
                                        g_date_free (ndate);
-                                       gda_value_set_timestamp (value, ts);
-                                       gda_timestamp_free (ts);
+                                       g_value_set_boxed (value, ts);
+                                       g_date_time_unref (ts);
                                }
                                real_set_value (GDAUI_ENTRY_WRAPPER (data), value);
                        }
diff --git a/libgda-ui/data-entries/gdaui-entry-timestamp.c b/libgda-ui/data-entries/gdaui-entry-timestamp.c
index 91389c35a..d0dfd5c8f 100644
--- a/libgda-ui/data-entries/gdaui-entry-timestamp.c
+++ b/libgda-ui/data-entries/gdaui-entry-timestamp.c
@@ -81,9 +81,9 @@ gdaui_entry_timestamp_new (GdaDataHandler *dh)
        GObject *obj;
 
        g_return_val_if_fail (dh && GDA_IS_DATA_HANDLER (dh), NULL);
-       g_return_val_if_fail (gda_data_handler_accepts_g_type (dh, GDA_TYPE_TIMESTAMP), NULL);
+       g_return_val_if_fail (gda_data_handler_accepts_g_type (dh, G_TYPE_DATE_TIME), NULL);
 
-       obj = g_object_new (GDAUI_TYPE_ENTRY_TIMESTAMP, "handler", dh, "type", GDA_TYPE_TIMESTAMP, NULL);
+       obj = g_object_new (GDAUI_TYPE_ENTRY_TIMESTAMP, "handler", dh, "type", G_TYPE_DATE_TIME, NULL);
 
        return GTK_WIDGET (obj);
 }
diff --git a/libgda-ui/gdaui-init.c b/libgda-ui/gdaui-init.c
index 66206a057..e33c475bb 100644
--- a/libgda-ui/gdaui-init.c
+++ b/libgda-ui/gdaui-init.c
@@ -195,7 +195,7 @@ gdaui_new_data_entry (GType type, const gchar *plugin_name)
                        entry = (GdauiDataEntry *) gdaui_entry_none_new (type);
                else if (type == GDA_TYPE_TIME)
                        entry = (GdauiDataEntry *) gdaui_entry_time_new (dh);
-               else if (type == GDA_TYPE_TIMESTAMP)
+               else if (type == G_TYPE_DATE_TIME)
                        entry = (GdauiDataEntry *) gdaui_entry_timestamp_new (dh);
                else if (type == G_TYPE_DATE)
                        entry = (GdauiDataEntry *) gdaui_entry_date_new (dh);
@@ -476,7 +476,7 @@ init_plugins_hash (void)
        plugin->plugin_file = NULL;
        plugin->nb_g_types = 1;
        plugin->valid_g_types = g_new (GType, plugin->nb_g_types);
-       plugin->valid_g_types [0] = GDA_TYPE_TIMESTAMP; 
+       plugin->valid_g_types [0] = G_TYPE_DATE_TIME;
        plugin->options_xml_spec = NULL;
        plugin->entry_create_func = entry_timestamp_create_func;
        plugin->cell_create_func = NULL;
diff --git a/libgda-xslt/sql_backend.c b/libgda-xslt/sql_backend.c
index b9a3b14f9..a121849c6 100644
--- a/libgda-xslt/sql_backend.c
+++ b/libgda-xslt/sql_backend.c
@@ -638,7 +638,7 @@ value_to_xmlchar (const GValue * value)
                                     (gpointer) GDA_TYPE_TIME,
                                     gda_handler_time_new ());
                g_hash_table_insert (data_handlers,
-                                    (gpointer) GDA_TYPE_TIMESTAMP,
+                                    (gpointer) G_TYPE_DATE_TIME,
                                     gda_handler_time_new ());
                g_hash_table_insert (data_handlers, (gpointer) G_TYPE_CHAR,
                                     gda_handler_numerical_new ());
diff --git a/libgda/gda-data-model.c b/libgda/gda-data-model.c
index a265eb63e..4cfce4617 100644
--- a/libgda/gda-data-model.c
+++ b/libgda/gda-data-model.c
@@ -1658,19 +1658,19 @@ export_to_text_separated (GdaDataModel *model, const gint *cols, gint nb_cols,
 
                        value = (GValue*) gda_data_model_iter_get_value_at (iter, cols[c]);
                        if (value && invalid_as_null) {
-                               if ((G_VALUE_TYPE (value) == G_TYPE_DATE)) {
+                               if (g_type_is_a (G_VALUE_TYPE (value), G_TYPE_DATE)) {
                                        GDate *date = (GDate*) g_value_get_boxed (value);
                                        if (!g_date_valid (date))
                                                value = NULL;
                                }
-                               else if ((G_VALUE_TYPE (value) == GDA_TYPE_TIME)) {
+                               else if (g_type_is_a (G_VALUE_TYPE (value), GDA_TYPE_TIME)) {
                                        const GdaTime *tim = gda_value_get_time (value);
                                        if (! gda_time_valid (tim))
                                                value = NULL;                                   
                                }
-                               else if ((G_VALUE_TYPE (value) == GDA_TYPE_TIMESTAMP)) {
-                                       const GdaTimestamp *ts = gda_value_get_timestamp (value);
-                                       if (! gda_timestamp_valid (ts))
+                               else if (g_type_is_a (G_VALUE_TYPE (value), G_TYPE_DATE_TIME)) {
+                                       GDateTime *ts = g_value_get_boxed (value);
+                                       if (ts == NULL)
                                                value = NULL;
                                }
                        }
diff --git a/libgda/gda-init.c b/libgda/gda-init.c
index 4b9cb80f0..6537cc9af 100644
--- a/libgda/gda-init.c
+++ b/libgda/gda-init.c
@@ -169,7 +169,7 @@ gda_init (void)
        g_assert (type);
        type = G_TYPE_DATE;
        g_assert (type);
-       type = GDA_TYPE_TIMESTAMP;
+       type = G_TYPE_DATE_TIME;
        g_assert (type);
        type = G_TYPE_ERROR;
        g_assert (type);
diff --git a/libgda/gda-server-provider-extra.c b/libgda/gda-server-provider-extra.c
index 99c68bdee..4cf207838 100644
--- a/libgda/gda-server-provider-extra.c
+++ b/libgda/gda-server-provider-extra.c
@@ -166,7 +166,7 @@ gda_server_provider_handler_use_default (GdaServerProvider *provider, GType type
                }
        }
        else if ((type == GDA_TYPE_TIME) ||
-                (type == GDA_TYPE_TIMESTAMP) ||
+                (type == G_TYPE_DATE_TIME) ||
                 (type == G_TYPE_DATE)) {
                /* no default time related data handler, it's too database specific */
                dh = NULL;
diff --git a/libgda/gda-server-provider.c b/libgda/gda-server-provider.c
index 81a54e246..335ec87bd 100644
--- a/libgda/gda-server-provider.c
+++ b/libgda/gda-server-provider.c
@@ -1584,7 +1584,7 @@ gda_server_provider_string_to_value (GdaServerProvider *provider, GdaConnection
                                 G_TYPE_BOOLEAN,
                                 GDA_TYPE_TIME,
                                 G_TYPE_DATE,
-                                GDA_TYPE_TIMESTAMP,
+                                G_TYPE_DATE_TIME,
                                 GDA_TYPE_GEOMETRIC_POINT,
                                 G_TYPE_STRING,
                                 GDA_TYPE_BINARY};
diff --git a/libgda/gda-set.c b/libgda/gda-set.c
index 3ae2a8a17..465139d36 100644
--- a/libgda/gda-set.c
+++ b/libgda/gda-set.c
@@ -1168,8 +1168,8 @@ gda_set_new_inline (gint nb, ...)
                        g_value_set_ulong (value, va_arg (ap, gulong));
                else if (g_type_is_a (type, G_TYPE_GTYPE))
                        g_value_set_gtype (value, va_arg(ap, GType));
-               else if (g_type_is_a (type, GDA_TYPE_TIMESTAMP))
-                       g_value_set_boxed (value, va_arg(ap, GdaTimestamp *));
+               else if (g_type_is_a (type, G_TYPE_DATE_TIME))
+                       g_value_set_boxed (value, va_arg(ap, GDateTime *));
                else if (g_type_is_a (type, GDA_TYPE_TIME))
                        gda_value_set_time (value, va_arg(ap, GdaTime *));
                else {
@@ -1267,7 +1267,7 @@ gda_set_set_holder_value (GdaSet *set, GError **error, const gchar *holder_id, .
        else if (g_type_is_a (type, G_TYPE_DATE))
                g_value_set_boxed (value, va_arg (ap, GDate *));
        else if (g_type_is_a (type, G_TYPE_DATE_TIME))
-               g_value_set_boxed (value, va_arg (ap, GdaTimestamp*));
+               g_value_set_boxed (value, va_arg (ap, GDateTime*));
        else if (g_type_is_a (type, GDA_TYPE_TIME))
                gda_value_set_time (value, va_arg (ap, GdaTime*));
        else if (g_type_is_a (type, G_TYPE_LONG))
diff --git a/libgda/gda-sql-builder.c b/libgda/gda-sql-builder.c
index 3267af556..32bfd3de0 100644
--- a/libgda/gda-sql-builder.c
+++ b/libgda/gda-sql-builder.c
@@ -574,10 +574,10 @@ create_typed_value (GType type, va_list *ap)
                timegda = va_arg (*ap, GdaTime *);
                gda_value_set_time ((v = gda_value_new (GDA_TYPE_TIME)), timegda);
        }
-       else if (type == GDA_TYPE_TIMESTAMP) {
-               GdaTimestamp *timestamp;
-               timestamp = va_arg (*ap, GdaTimestamp *);
-               gda_value_set_timestamp ((v = gda_value_new (GDA_TYPE_TIMESTAMP)), timestamp);
+       else if (type == G_TYPE_DATE_TIME) {
+               GDateTime *timestamp;
+               timestamp = va_arg (*ap, GDateTime *);
+               g_value_set_boxed ((v = gda_value_new (G_TYPE_DATE_TIME)), timestamp);
        }
        else if (type == GDA_TYPE_NULL)
                v = gda_value_new_null ();
diff --git a/libgda/gda-statement.c b/libgda/gda-statement.c
index d558a7722..cf6ba802c 100644
--- a/libgda/gda-statement.c
+++ b/libgda/gda-statement.c
@@ -818,10 +818,10 @@ default_render_value (const GValue *value, GdaSqlRenderingContext *context, GErr
                                }
                        }
                        else if (g_type_is_a (G_VALUE_TYPE (value), G_TYPE_DATE_TIME)) {
-                               GdaTimestamp *nts;
-                               nts = (GdaTimestamp*) g_value_get_boxed (value);
+                               GDateTime *nts;
+                               nts = (GDateTime*) g_value_get_boxed (value);
                                if (nts != NULL) {
-                                       nts = (GdaTimestamp*) g_date_time_to_utc ((GDateTime*) nts);
+                                       nts = (GDateTime*) g_date_time_to_utc ((GDateTime*) nts);
           if (nts != NULL) {
                                          GValue v = {0};
                                          g_value_init (&v, G_TYPE_DATE_TIME);
diff --git a/libgda/gda-util.c b/libgda/gda-util.c
index ec79add96..c8732b4d2 100644
--- a/libgda/gda-util.c
+++ b/libgda/gda-util.c
@@ -3203,7 +3203,6 @@ _parse_iso8601_time (GdaTime *timegda, const gchar *value, gchar sep, glong time
        const char *endptr;
        gchar *stz = NULL;
        gchar *fs = NULL;
-       gchar *fsp = NULL;
        gdouble seconds = 0.0;
        glong fraction = 0.0;
        /* https://en.wikipedia.org/wiki/ISO_8601 */
@@ -3332,9 +3331,9 @@ gda_parse_formatted_time (GdaTime *timegda, const gchar *value, gchar sep)
  *
  * Accepted date format is "YYYY-MM-DDTHH:MM:SS[.ms][TZ]" where TZ is +hour or -hour
  *
- * Returns: a new #GdaTimestamp if @value has been sucessfuly parsed as a valid timestamp (see 
g_date_valid())
+ * Returns: a new #GDateTime if @value has been sucessfuly parsed as a valid timestamp (see g_date_valid())
  */
-GdaTimestamp*
+GDateTime*
 gda_parse_iso8601_timestamp (const gchar *value)
 {
        return gda_parse_formatted_timestamp (value, G_DATE_YEAR, G_DATE_MONTH, G_DATE_DAY, '-');
@@ -3351,11 +3350,11 @@ gda_parse_iso8601_timestamp (const gchar *value)
  * This function is similar to gda_parse_iso8601_timestamp() (with @first being @G_DATE_YEAR, @second being 
@G_DATE_MONTH,
  * @third being @G_DATE_DAY and @sep being '-') but allows one to specify the expected date format.
  *
- * Returns: (nullable): a new #GdaTimestamp if @value has been sucessfuly parsed as a valid date (see 
g_date_valid()).
+ * Returns: (nullable): a new #GDateTime if @value has been sucessfuly parsed as a valid date (see 
g_date_valid()).
  * 
  * Since: 5.2
  */
-GdaTimestamp*
+GDateTime*
 gda_parse_formatted_timestamp (const gchar *value,
                               GDateDMY first, GDateDMY second, GDateDMY third, gchar sep)
 {
@@ -3401,12 +3400,12 @@ gda_parse_formatted_timestamp (const gchar *value,
        g_print ("Time Zone: %d", g_time_zone_get_offset (tz, 0));
        gdouble seconds;
        seconds = (gdouble) gda_time_get_second (timegda) + gda_time_get_fraction (timegda) / 1000000;
-       return (GdaTimestamp*) g_date_time_new (tz,
-                                                                                                             
                                                          g_date_get_year (&gdate),
-                                                                                                             
                                                          g_date_get_month (&gdate),
-                                                                                                             
                                                          g_date_get_day (&gdate),
-                                                                                                             
                                                          gda_time_get_hour (timegda),
-                                                                                                             
                                                          gda_time_get_minute (timegda),
-                                                                                                             
                                                          seconds);
+       return g_date_time_new (tz,
+                                                                                                       
g_date_get_year (&gdate),
+                                                                                                       
g_date_get_month (&gdate),
+                                                                                                       
g_date_get_day (&gdate),
+                                                                                                       
gda_time_get_hour (timegda),
+                                                                                                       
gda_time_get_minute (timegda),
+                                                                                                       
seconds);
 
 }
diff --git a/libgda/gda-util.h b/libgda/gda-util.h
index c6f23a18e..721239690 100644
--- a/libgda/gda-util.h
+++ b/libgda/gda-util.h
@@ -119,11 +119,11 @@ void         gda_connection_string_split (const gchar *string, gchar **out_cnc_p
  */
 gboolean     gda_parse_iso8601_date (GDate *gdate, const gchar *value);
 gboolean     gda_parse_iso8601_time (GdaTime *timegda, const gchar *value);
-GdaTimestamp*gda_parse_iso8601_timestamp (const gchar *value);
+GDateTime    *gda_parse_iso8601_timestamp (const gchar *value);
 gboolean     gda_parse_formatted_date (GDate *gdate, const gchar *value,
                                       GDateDMY first, GDateDMY second, GDateDMY third, gchar sep);
 gboolean     gda_parse_formatted_time (GdaTime *timegda, const gchar *value, gchar sep);
-GdaTimestamp*gda_parse_formatted_timestamp (const gchar *value,
+GDateTime   *gda_parse_formatted_timestamp (const gchar *value,
                                            GDateDMY first, GDateDMY second, GDateDMY third, gchar sep);
 
 G_END_DECLS
diff --git a/libgda/gda-value.c b/libgda/gda-value.c
index 4f8b42cd2..40bbfc8d7 100644
--- a/libgda/gda-value.c
+++ b/libgda/gda-value.c
@@ -218,12 +218,12 @@ set_from_string (GValue *value, const gchar *as_string)
                gda_time_free (timegda);
        }
        else if (g_type_is_a (type, G_TYPE_DATE_TIME)) {
-               GdaTimestamp* timestamp = gda_parse_iso8601_timestamp (as_string);
+               GDateTime* timestamp = gda_parse_iso8601_timestamp (as_string);
                if (timestamp) {
                        g_value_set_boxed (value, timestamp);
                        retval = TRUE;
                }
-               gda_timestamp_free (timestamp);
+               g_date_time_unref (timestamp);
        }
        else if (type == GDA_TYPE_NULL) {
                gda_value_set_null (value);
@@ -1775,238 +1775,6 @@ gda_time_change_timezone (GdaTime *time, glong ntz)
        time->timezone = ntz;
 }
 
-/**
- * gda_timestamp_new:
- *
- * A new timestamp initialized to the instantace of creation at UTC zone.
- *
- * Returns: (transfer full):
- */
-GdaTimestamp*
-gda_timestamp_new (void)
-{
-       return (GdaTimestamp*) g_date_time_new_now_utc ();
-}
-
-/**
- * gda_timestamp_new_from_values:
- * @year: year
- * @month: month
- * @hour: hours
- * @minute: minutes
- * @second: seconds
- * @fraction: fraction of seconds
- * @timezone: timezone used
- *
- * Returns: (transfer full): a new value storing a timestamp
- */
-GdaTimestamp*
-gda_timestamp_new_from_values (gushort year, gushort month, gushort day, gushort hour, gushort minute, 
gushort second, gulong fraction, glong timezone)
-{
-  GString* tzd;
-  GString* sec;
-  GTimeZone* tz;
-  gchar* sign;
-  gdouble seconds;
-
-  tzd = g_string_new ("");
-  sign = "+";
-  if (timezone < 0)
-    sign = "-";
-  g_string_printf (tzd,"%s%ul", sign, (uint) timezone);
-       tz = g_time_zone_new (tzd->str);
-
-  sec = g_string_new ("");
-  g_string_printf (sec,"%d.%lu", second, fraction);
-  seconds = g_strtod (sec->str, NULL);
-
-  GdaTimestamp* timestamp = (GdaTimestamp*) g_date_time_new (tz,
-                                            (gint) year,
-                                            (gint) month,
-                                            (gint) day,
-                                            (gint) hour,
-                                            (gint) minute,
-                                            (gint) seconds);
-  g_string_free (tzd, TRUE);
-  g_string_free (sec, TRUE);
-       return timestamp;
-}
-
-/**
- * gda_timestamp_copy:
- *
- * Returns: (transfer full):
- */
-GdaTimestamp*
-gda_timestamp_copy (GdaTimestamp *ts)
-{
-       g_return_val_if_fail(ts != NULL, NULL);
-
-       GDateTime *dts = (GDateTime*) ts;
-       GTimeZone *tz;
-
-       tz = g_time_zone_new (g_date_time_get_timezone_abbreviation (dts));
-
-       return (GdaTimestamp*) g_date_time_new (tz,
-                                                                                                             
                                                          g_date_time_get_year (dts),
-                                                                                                             
                                                          g_date_time_get_month (dts),
-                                                                                                             
                                                          g_date_time_get_day_of_month (dts),
-                                                                                                             
                                                          g_date_time_get_hour (dts),
-                                                                                                             
                                                          g_date_time_get_minute (dts),
-                                                                                                             
                                                          g_date_time_get_seconds (dts));
-
-
-}
-
-void
-gda_timestamp_free (GdaTimestamp *ts)
-{
-       g_date_time_unref ((GDateTime*) ts);
-}
-
-/**
- * gda_timestamp_valid:
- * @timestamp: a #GdaTimestamp value to check if it is valid
- *
- * Returns: #TRUE if #GdaTimestamp is valid; %FALSE otherwise.
- *
- * Since: 4.2
- */
-gboolean
-gda_timestamp_valid (const GdaTimestamp *timestamp)
-{
-       g_return_val_if_fail (timestamp, FALSE);
-
-       GdaTimestamp *copy = gda_timestamp_copy ((GdaTimestamp*) timestamp);
-  return copy != NULL ? TRUE : FALSE;
-}
-
-/**
- * gda_timestamp_change_timezone:
- * @ts: a valid #GdaTimestamp
- * @ntz: a new timezone to use, in seconds added to GMT
- *
- * This function is similar to gda_time_change_timezone() but operates on time stamps.
- *
- * Note: this method is no longer valid use gda_timestamp_new() to create a new
- * object with the required time zone.
- *
- * Deprecated: 6.0
- * Since: 5.2
- */
-void
-gda_timestamp_change_timezone (GdaTimestamp *ts, glong ntz)
-{
-       g_return_if_fail (ts);
-       g_return_if_fail ((ntz > - 12 * 3600) && (ntz < 12 * 3600));
-}
-
-
-gshort
-gda_timestamp_get_year (const GdaTimestamp* timestamp)
-{
-       g_return_val_if_fail (timestamp != NULL, 0);
-       return g_date_time_get_year ((GDateTime*) timestamp);
-}
-void
-gda_timestamp_set_year (GdaTimestamp* timestamp, gshort year)
-{
-       g_return_if_fail (timestamp != NULL);
-}
-gushort
-gda_timestamp_get_month (const GdaTimestamp* timestamp)
-{
-       g_return_val_if_fail (timestamp != NULL, 0);
-       return g_date_time_get_month ((GDateTime*) timestamp);
-}
-void
-gda_timestamp_set_month (GdaTimestamp* timestamp, gushort month)
-{
-       g_return_if_fail (timestamp != NULL);
-}
-gushort
-gda_timestamp_get_day (const GdaTimestamp* timestamp)
-{
-       g_return_val_if_fail (timestamp != NULL, 0);
-       return g_date_time_get_day_of_month ((GDateTime*) timestamp);
-}
-void
-gda_timestamp_set_day (GdaTimestamp* timestamp, gushort day)
-{
-       g_return_if_fail (timestamp != NULL);
-}
-gushort
-gda_timestamp_get_hour (const GdaTimestamp* timestamp)
-{
-       g_return_val_if_fail (timestamp != NULL, 0);
-       return g_date_time_get_hour ((GDateTime*) timestamp);
-}
-void
-gda_timestamp_set_hour (GdaTimestamp* timestamp, gushort hour)
-{
-       g_return_if_fail (timestamp != NULL);
-}
-gushort
-gda_timestamp_get_minute (const GdaTimestamp* timestamp)
-{
-       g_return_val_if_fail (timestamp != NULL, 0);
-       return g_date_time_get_minute ((GDateTime*) timestamp);
-}
-void
-gda_timestamp_set_minute (GdaTimestamp* timestamp, gushort minute)
-{
-       g_return_if_fail (timestamp != NULL);
-}
-gdouble
-gda_timestamp_get_seconds (const GdaTimestamp* timestamp)
-{
-       g_return_val_if_fail (timestamp != NULL, 0);
-       return (gushort) g_date_time_get_seconds ((GDateTime*) timestamp);
-}
-gushort
-gda_timestamp_get_second (const GdaTimestamp* timestamp)
-{
-       g_return_val_if_fail (timestamp != NULL, 0);
-       return (gushort) g_date_time_get_second ((GDateTime*) timestamp);
-}
-void
-gda_timestamp_set_second (GdaTimestamp* timestamp, gushort second)
-{
-       g_return_if_fail (timestamp != NULL);
-}
-/**
- * gda_timestamp_get_fraction:
- *
- * Microseconds.
- */
-gulong
-gda_timestamp_get_fraction (const GdaTimestamp* timestamp)
-{
-       g_return_val_if_fail (timestamp != NULL, 0);
-       return (gulong) ((g_date_time_get_seconds ((GDateTime*) timestamp)
-               - g_date_time_get_second ((GDateTime*) timestamp)) * 1000000.0);
-}
-void
-gda_timestamp_set_fraction (GdaTimestamp* timestamp, gulong fraction)
-{
-       g_return_if_fail (timestamp != NULL);
-}
-/**
- * gda_timestamp_get_timezone:
- *
- * Seconds from UTC.
- */
-glong
-gda_timestamp_get_timezone (const GdaTimestamp* timestamp)
-{
-       g_return_val_if_fail (timestamp != NULL, 0);
-       return (glong) (g_date_time_get_utc_offset ((GDateTime*) timestamp) / 1000000);
-}
-void
-gda_timestamp_set_timezone (GdaTimestamp* timestamp, glong timezone)
-{
-       g_return_if_fail (timestamp != NULL);
-}
 
 /**
  * gda_value_new:
@@ -2211,22 +1979,34 @@ gda_value_new_timestamp_from_timet (time_t val)
        
 #endif
 
-        if (ltm) {
-                GdaTimestamp* tstamp = gda_timestamp_new_from_values (ltm->tm_year + 1900,
-                                                                      ltm->tm_mon + 1,
-                                                                      ltm->tm_mday,
-                                                                      ltm->tm_hour,
-                                                                      ltm->tm_min,
-                                                                      ltm->tm_sec,
-                                                                      0,
-                                                                      tz);
-
+       if (ltm) {
+               gint tzi = tz;
+               if (tzi < 0)
+                       tzi *= -1;
+               gint h = tzi/60/60;
+               gint m = tzi/60 - h*60;
+               gint s = tzi - h*60*60 - m*60;
+               gchar *stz = g_strdup_printf ("%s%02d:%02d:%02d",
+                                                                                                             
                          tz < 0 ? "-" : "+",
+                                                                                                             
                          h, m, s);
+               GTimeZone *tzo = g_time_zone_new (stz);
+               g_free (stz);
+               GDateTime* tstamp = g_date_time_new (tzo,
+                                                                                                             
                  ltm->tm_year + 1900,
+                                                                                                             
                  ltm->tm_mon + 1,
+                                                                                                             
                  ltm->tm_mday,
+                                                                                                             
                  ltm->tm_hour,
+                                                                                                             
                  ltm->tm_min,
+                                                                                                             
                  ltm->tm_sec);
+
+               g_time_zone_unref (tzo);
                value = g_new0 (GValue, 1);
-                gda_value_set_timestamp (value, (const GdaTimestamp *) tstamp);
-               gda_timestamp_free (tstamp);
-        }
+               g_value_init (value, G_TYPE_DATE_TIME);
+               g_value_set_boxed (value, tstamp);
+               g_date_time_unref (tstamp);
+       }
 
-        return value;
+       return value;
 }
 
 /**
@@ -2775,12 +2555,12 @@ gda_value_set_time (GValue *value, const GdaTime *val)
  *
  * Returns: (transfer none): the value stored in @value.
  */
-const GdaTimestamp *
+const GDateTime *
 gda_value_get_timestamp (const GValue *value)
 {
        g_return_val_if_fail (value, NULL);
-       g_return_val_if_fail (gda_value_isa (value, GDA_TYPE_TIMESTAMP), NULL);
-       return (const GdaTimestamp *) g_value_get_boxed(value);
+       g_return_val_if_fail (gda_value_isa (value, G_TYPE_DATE_TIME), NULL);
+       return (const GDateTime *) g_value_get_boxed(value);
 }
 
 /**
@@ -2791,13 +2571,13 @@ gda_value_get_timestamp (const GValue *value)
  * Stores @val into @value.
  */
 void
-gda_value_set_timestamp (GValue *value, const GdaTimestamp *val)
+gda_value_set_timestamp (GValue *value, const GDateTime *val)
 {
        g_return_if_fail (value);
        g_return_if_fail (val);
 
        l_g_value_unset (value);
-       g_value_init (value, GDA_TYPE_TIMESTAMP);
+       g_value_init (value, G_TYPE_DATE_TIME);
        g_value_set_boxed (value, val);
 }
 
@@ -3349,10 +3129,10 @@ gda_value_compare (const GValue *value1, const GValue *value2)
                        return 0;
        }
 
-       else if (type == GDA_TYPE_TIMESTAMP) {
-               const GdaTimestamp *ts1, *ts2;
-               ts1 = gda_value_get_timestamp (value1);
-               ts2 = gda_value_get_timestamp (value2);
+       else if (type == G_TYPE_DATE_TIME) {
+               const GDateTime *ts1, *ts2;
+               ts1 = g_value_get_boxed (value1);
+               ts2 = g_value_get_boxed (value2);
                if (ts1 && ts2)
                        return g_date_time_compare ((GDateTime*) ts1, (GDateTime*) ts2);
                else if (ts1)
diff --git a/libgda/gda-value.h b/libgda/gda-value.h
index 614a89b89..f3c07af64 100644
--- a/libgda/gda-value.h
+++ b/libgda/gda-value.h
@@ -270,26 +270,8 @@ GType                             gda_default_get_type (void) G_GNUC_CONST;
 
 
 /* Timestamp based on GDateTime */
-#define GDA_TYPE_TIMESTAMP (G_TYPE_DATE_TIME)
-
-typedef struct GDateTime GdaTimestamp;
-GdaTimestamp                     *gda_timestamp_new (void);
-GdaTimestamp                     *gda_timestamp_new_from_values (gushort year, gushort month, gushort day, 
gushort hour, gushort minute, gushort second, gulong fraction, glong timezone);
-gshort                            gda_timestamp_get_year (const GdaTimestamp* timestamp);
-gushort                           gda_timestamp_get_month (const GdaTimestamp* timestamp);
-gushort                           gda_timestamp_get_day (const GdaTimestamp* timestamp);
-gushort                           gda_timestamp_get_hour (const GdaTimestamp* timestamp);
-gushort                           gda_timestamp_get_minute (const GdaTimestamp* timestamp);
-gdouble                           gda_timestamp_get_seconds (const GdaTimestamp* timestamp);
-gushort                           gda_timestamp_get_second (const GdaTimestamp* timestamp);
-gulong                            gda_timestamp_get_fraction (const GdaTimestamp* timestamp);
-glong                             gda_timestamp_get_timezone (const GdaTimestamp* timestamp);
-GdaTimestamp                     *gda_timestamp_copy (GdaTimestamp *ts);
-void                              gda_timestamp_free (GdaTimestamp *ts);
-gboolean                          gda_timestamp_valid (const GdaTimestamp *timestamp);
-void                              gda_timestamp_change_timezone (GdaTimestamp *ts, glong ntz);
-const GdaTimestamp               *gda_value_get_timestamp (const GValue *value);
-void                              gda_value_set_timestamp (GValue *value, const GdaTimestamp *val);
+
+GDateTime                        *gda_date_time_copy (GDateTime *ts);
 
 GType                             gda_short_get_type (void) G_GNUC_CONST;
 GType                             gda_ushort_get_type (void) G_GNUC_CONST;
diff --git a/libgda/handlers/gda-handler-time.c b/libgda/handlers/gda-handler-time.c
index 51259a693..92eb2911e 100644
--- a/libgda/handlers/gda-handler-time.c
+++ b/libgda/handlers/gda-handler-time.c
@@ -336,35 +336,14 @@ gda_handler_time_get_no_locale_str_from_value (GdaHandlerTime *dh, const GValue
                g_string_append_c (string, '\'');
                retval = g_string_free (string, FALSE);
        }
-       else if (type == GDA_TYPE_TIMESTAMP) {
-               const GdaTimestamp *gdats;
-               GDate *vdate;
+       else if (type == G_TYPE_DATE_TIME) {
+               GDateTime *gdats;
 
-               gdats = gda_value_get_timestamp ((GValue *) value);
-               vdate = g_date_new_dmy (gda_timestamp_get_day (gdats), gda_timestamp_get_month (gdats), 
gda_timestamp_get_year (gdats));
-               str = render_date_locale (vdate, dh->sql_locale);
-               g_date_free (vdate);
-
-               if (str) {
-                       GString *string;
-                       string = g_string_new ("");
-                       g_string_append_printf (string, "%02u:%02u:%02u",
-                                               gda_timestamp_get_hour (gdats),
-                                               gda_timestamp_get_minute (gdats),
-                                               gda_timestamp_get_second (gdats));
-                       if (gda_timestamp_get_fraction (gdats) != 0)
-                               g_string_append_printf (string, ".%lu", gda_timestamp_get_fraction (gdats));
-                       
-                       if (gda_timestamp_get_timezone (gdats) != GDA_TIMEZONE_INVALID)
-                               g_string_append_printf (string, "%+02d",
-                                                       (int) gda_timestamp_get_timezone (gdats) / 3600);
-                       
-                       retval = g_strdup_printf ("%s %s", str, string->str);
-                       g_free (str);
-                       g_string_free (string, TRUE);
-               }
+               gdats = (GDateTime*) g_value_get_boxed ((GValue *) value);
+               if (gdats != NULL)
+                       retval = g_date_time_format (gdats, "%c");
                else
-                       retval = g_strdup ("NULL");     
+                       retval = g_strdup ("NULL");
        }
        else if (type == G_TYPE_DATE_TIME) {
                GDateTime *ts;
@@ -433,7 +412,7 @@ gda_handler_time_get_format (GdaHandlerTime *dh, GType type)
        g_return_val_if_fail (GDA_IS_HANDLER_TIME (dh), NULL);
 
        string = g_string_new ("");
-       if ((type == G_TYPE_DATE) || (type == GDA_TYPE_TIMESTAMP) || (type == G_TYPE_DATE_TIME)) {
+       if ((type == G_TYPE_DATE) || (type == G_TYPE_DATE_TIME) || (type == G_TYPE_DATE_TIME)) {
                for (i=0; i<3; i++) {
                        if (i > 0)
                                g_string_append_c (string, dh->str_locale->separator);
@@ -454,10 +433,10 @@ gda_handler_time_get_format (GdaHandlerTime *dh, GType type)
                        }
                }
        }
-       if (type == GDA_TYPE_TIMESTAMP)
+       if (type == G_TYPE_DATE_TIME)
                g_string_append_c (string, ' ');
 
-       if ((type == GDA_TYPE_TIME) || (type == GDA_TYPE_TIMESTAMP) || (type == G_TYPE_DATE_TIME))
+       if ((type == GDA_TYPE_TIME) || (type == G_TYPE_DATE_TIME) || (type == G_TYPE_DATE_TIME))
                g_string_append (string, "00:00:00");
 
        str = string->str;
@@ -486,7 +465,7 @@ gda_handler_time_get_hint (GdaHandlerTime *dh, GType type)
        g_return_val_if_fail (GDA_IS_HANDLER_TIME (dh), NULL);
 
        string = g_string_new ("");
-       if ((type == G_TYPE_DATE) || (type == GDA_TYPE_TIMESTAMP) || (type == G_TYPE_DATE_TIME)) {
+       if ((type == G_TYPE_DATE) || (type == G_TYPE_DATE_TIME) || (type == G_TYPE_DATE_TIME)) {
                for (i=0; i<3; i++) {
                        if (i > 0)
                                g_string_append_c (string, dh->str_locale->separator);
@@ -572,32 +551,11 @@ gda_handler_time_get_sql_from_value (GdaDataHandler *iface, const GValue *value)
                retval = g_string_free (string, FALSE);
        }
        else if (type == G_TYPE_DATE_TIME) {
-               const GdaTimestamp *gdats;
-               GDate *vdate;
+               GDateTime *gdats;
 
-               gdats = g_value_get_boxed ((GValue *) value);
-               vdate = g_date_new_dmy (gda_timestamp_get_day(gdats), gda_timestamp_get_month (gdats), 
gda_timestamp_get_year (gdats));
-               str = render_date_locale (vdate, hdl->sql_locale);
-               g_date_free (vdate);
-
-               if (str) {
-                       GString *string;
-                       string = g_string_new ("");
-                       g_string_append_printf (string, "%02u:%02u:%02u",
-                                               gda_timestamp_get_hour (gdats),
-                                               gda_timestamp_get_minute (gdats),
-                                               gda_timestamp_get_second (gdats));
-                       if (gda_timestamp_get_fraction (gdats) != 0)
-                               g_string_append_printf (string, ".%lu", gda_timestamp_get_fraction (gdats));
-                       
-                       if (gda_timestamp_get_timezone (gdats) != GDA_TIMEZONE_INVALID)
-                               g_string_append_printf (string, "%+02d",
-                                                       (int) gda_timestamp_get_timezone (gdats) / 3600);
-                       
-                       retval = g_strdup_printf ("'%sT%s'", str, string->str);
-                       g_free (str);
-                       g_string_free (string, TRUE);
-               }
+               gdats = (GDateTime*) g_value_get_boxed ((GValue *) value);
+               if (gdats != NULL)
+                       retval = g_date_time_format (gdats, "%c");
                else
                        retval = g_strdup ("NULL");     
        }
@@ -676,36 +634,15 @@ gda_handler_time_get_str_from_value (GdaDataHandler *iface, const GValue *value)
                g_free (str);
        }
        else if (type == G_TYPE_DATE_TIME) {
-               const GdaTimestamp *gdats;
-               GDate *vdate;
+               GDateTime *gdats;
 
-               gdats = gda_value_get_timestamp ((GValue *) value);
-               vdate = g_date_new_dmy (gda_timestamp_get_day (gdats), gda_timestamp_get_month (gdats), 
gda_timestamp_get_year (gdats));
-               str = render_date_locale (vdate, hdl->str_locale);
-               g_date_free (vdate);
-
-               if (str) {
-                       GString *string;
-                       string = g_string_new ("");
-                       g_string_append_printf (string, "%02u:%02u:%02u",
-                                               gda_timestamp_get_hour (gdats),
-                                               gda_timestamp_get_minute (gdats),
-                                               gda_timestamp_get_second (gdats));
-                       if (gda_timestamp_get_fraction (gdats) != 0)
-                               g_string_append_printf (string, ".%lu", gda_timestamp_get_fraction (gdats));
-                       
-                       if (gda_timestamp_get_timezone (gdats) != GDA_TIMEZONE_INVALID)
-                               g_string_append_printf (string, "%+02d",
-                                                       (int) gda_timestamp_get_timezone (gdats) / 3600);
-                       
-                       retval = g_strdup_printf ("%sT%s", str, string->str);
-                       g_free (str);
-                       g_string_free (string, TRUE);
-               }
+               gdats = (GDateTime*) g_value_get_boxed ((GValue *) value);
+               if (gdats != NULL)
+                       retval = g_date_time_format (gdats, "%c");
                else
-                       retval = g_strdup (""); 
+                       retval = g_strdup ("");
        }
-       else if (type == G_TYPE_DATE_TIME) {
+       else if (type == G_TYPE_DATE_TIME) { // FIXME: Remove
                GDateTime *ts;
                GDate *vdate;
 
@@ -858,12 +795,11 @@ gda_handler_time_get_value_from_str (GdaDataHandler *iface, const gchar *str, GT
 
 
 
-static GdaTimestamp * make_timestamp (GdaHandlerTime *hdl,
+static GDateTime * make_timestamp (GdaHandlerTime *hdl,
                                const gchar *value, LocaleSetting *locale);
 static gboolean make_date (GdaHandlerTime *hdl, GDate *date, const gchar *value,
                           LocaleSetting *locale, const gchar **out_endptr);
 static gboolean make_time (GdaHandlerTime *hdl, GdaTime *timegda, const gchar *value);
-static GDateTime *make_ts (GdaHandlerTime *hdl, const gchar *value, LocaleSetting *locale);
 static GValue *
 gda_handler_time_get_value_from_locale (GdaDataHandler *iface, const gchar *sql, 
                                        GType type, LocaleSetting *locale)
@@ -890,11 +826,11 @@ gda_handler_time_get_value_from_locale (GdaDataHandler *iface, const gchar *sql,
                gda_time_free (timegda);
        }
        else if (g_type_is_a (type, G_TYPE_DATE_TIME)) {
-               GdaTimestamp* timestamp = make_timestamp (hdl, sql, locale);
+               GDateTime* timestamp = make_timestamp (hdl, sql, locale);
                if (timestamp != NULL) {
                        value = g_value_init (g_new0 (GValue, 1), G_TYPE_DATE_TIME);
                        g_value_set_boxed (value, timestamp);
-                       gda_timestamp_free (timestamp);
+                       g_date_time_unref (timestamp);
                }
        }
        else
@@ -903,52 +839,12 @@ gda_handler_time_get_value_from_locale (GdaDataHandler *iface, const gchar *sql,
        return value;
 }
 
-static GDateTime *
-make_ts (GdaHandlerTime *hdl, const gchar *value, LocaleSetting *locale)
-{
-       GDateTime *ts;
-       const gchar *end_ptr;
-       GDate vdate;
-       GdaTime* vtime;
-       vtime = gda_time_new ();
-       gda_time_set_timezone (vtime, GDA_TIMEZONE_INVALID);
-
-       gboolean retval;
-       retval = make_date (hdl, &vdate, value, locale, &end_ptr);
-       if (retval) {
-               if (*end_ptr != ' ' && *end_ptr != 'T')
-                       retval = FALSE;
-               else
-                       retval = make_time (hdl, vtime, end_ptr + 1);
-       }
-       if (!retval)
-               return NULL;
 
-       GTimeZone *tz;
-       if (gda_time_get_timezone (vtime) != GDA_TIMEZONE_INVALID) {
-               gchar *tzdef;
-               if (gda_time_get_timezone (vtime) >= 0)
-                       tzdef = g_strdup_printf ("+%02d", (gint) (gda_time_get_timezone (vtime) / 3600));
-               else
-                       tzdef = g_strdup_printf ("-%02d", (gint) (- gda_time_get_timezone (vtime) / 3600));
-               tz = g_time_zone_new (tzdef);
-               g_free (tzdef);
-       }
-       else
-               tz = g_time_zone_new_local ();
-       ts = g_date_time_new (tz, vdate.year, vdate.month, vdate.day,
-                             gda_time_get_hour (vtime), gda_time_get_minute (vtime), (gdouble) 
gda_time_get_second (vtime) + gda_time_get_fraction (vtime));
-       g_time_zone_unref (tz);
-       gda_time_free (vtime);
-
-       return ts;
-}
-
-/* Makes a GdaTimestamp from a string like "24-12-2003T13:12:01.12+01",
+/* Makes a GDateTime from a string like "24-12-2003T13:12:01.12+01",
  * taken from libgda/gda-value.h
  * with a modification for the date format
  */
-static GdaTimestamp*
+static GDateTime*
 make_timestamp (GdaHandlerTime *hdl, const gchar *value, LocaleSetting *locale)
 {
        gboolean retval;
@@ -993,11 +889,10 @@ make_timestamp (GdaHandlerTime *hdl, const gchar *value, LocaleSetting *locale)
                                                                                                              
                          gda_time_get_hour (vtime),
                                                                                                              
                          gda_time_get_minute (vtime),
                                                                                                              
                          seconds);
-       g_print ("Fraction: %f - %ld\n", g_date_time_get_seconds (dt), gda_timestamp_get_fraction 
((GdaTimestamp*) dt));
        gchar *tss = g_date_time_format (dt, "%FT%H%:%M:%S:::z");
        g_print ("String: %s\n", tss);
        g_free (tss);
-       return (GdaTimestamp*) dt;
+       return (GDateTime*) dt;
 }
 
 static gboolean
@@ -1098,9 +993,9 @@ make_date (G_GNUC_UNUSED GdaHandlerTime *hdl, GDate *date, const gchar *value,
                else if (value [ptr-tofree])
                        error = TRUE;
        }
-       GDateDay day;
-       GDateMonth month;
-       GDateYear year;
+       GDateDay day = 1;
+       GDateMonth month = 1;
+       GDateYear year = 1;
 
        /* analyse what's parsed */
        if (!error) {
@@ -1194,25 +1089,25 @@ gda_handler_time_get_sane_init_value (G_GNUC_UNUSED GdaDataHandler *iface, GType
                value = g_value_init (g_new0 (GValue, 1), GDA_TYPE_TIME);
                gda_value_set_time (value, gtime);
        }
-       else if (g_type_is_a (type, GDA_TYPE_TIMESTAMP)) {
-               GdaTimestamp* gts = gda_timestamp_new_from_values (stm->tm_year + 1900,
-                                                       stm->tm_mon + 1,
-                                                       stm->tm_mday,
-                                                       stm->tm_hour,
-                                                       stm->tm_min,
-                                                       stm->tm_sec,
-                                                       0,
-                                                       0);
+       else if (g_type_is_a (type, G_TYPE_DATE_TIME)) {
+               GTimeZone *tz = g_time_zone_new ("Z");
+               GDateTime* gts = g_date_time_new (tz,
+                                                                                                             
                                          stm->tm_year + 1900,
+                                                                                                             
                                          stm->tm_mon + 1,
+                                                                                                             
                                          stm->tm_mday,
+                                                                                                             
                                          stm->tm_hour,
+                                                                                                             
                                          stm->tm_min,
+                                                                                                             
                                          stm->tm_sec);
 
                if (gts != NULL) {
       value = g_value_init (g_new0 (GValue, 1), G_TYPE_DATE_TIME);
                  g_value_set_boxed (value, gts);
-      gda_timestamp_free (gts);
+      g_date_time_unref (gts);
     } else {
       g_warning (_("Invalid values from statement to create a timestamp"));
     }
        }
-       else if (type == G_TYPE_DATE_TIME) {
+       else if (type == G_TYPE_DATE_TIME) { // FIXME: Remove
                GDateTime *ts;
                GTimeZone *tz;
                tz = g_time_zone_new_local ();
@@ -1271,7 +1166,7 @@ gda_handler_time_init (GdaHandlerTime *hdl)
        hdl->valid_g_types = g_new0 (GType, 7);
        hdl->valid_g_types[0] = G_TYPE_DATE;
        hdl->valid_g_types[1] = GDA_TYPE_TIME;
-       hdl->valid_g_types[2] = GDA_TYPE_TIMESTAMP;
+       hdl->valid_g_types[2] = G_TYPE_DATE_TIME;
        hdl->valid_g_types[3] = G_TYPE_DATE_TIME;
 
        /* taking into accout the locale */
diff --git a/libgda/sqlite/gda-sqlite-provider.c b/libgda/sqlite/gda-sqlite-provider.c
index 3dc5d7b16..20434e6f4 100644
--- a/libgda/sqlite/gda-sqlite-provider.c
+++ b/libgda/sqlite/gda-sqlite-provider.c
@@ -1698,7 +1698,7 @@ gda_sqlite_provider_get_data_handler (GdaServerProvider *provider, GdaConnection
                }
        }
        else if ((type == GDA_TYPE_TIME) ||
-                (type == GDA_TYPE_TIMESTAMP) ||
+                (type == G_TYPE_DATE_TIME) ||
                 (type == G_TYPE_DATE)) {
                dh = gda_server_provider_handler_find (provider, NULL, type, NULL);
                if (!dh) {
@@ -1709,7 +1709,7 @@ gda_sqlite_provider_get_data_handler (GdaServerProvider *provider, GdaConnection
                        gda_handler_time_set_str_spec (GDA_HANDLER_TIME (dh), G_DATE_YEAR, G_DATE_MONTH,
                                                       G_DATE_DAY, '-', FALSE);
                        gda_server_provider_handler_declare (provider, dh, NULL, GDA_TYPE_TIME, NULL);
-                       gda_server_provider_handler_declare (provider, dh, NULL, GDA_TYPE_TIMESTAMP, NULL);
+                       gda_server_provider_handler_declare (provider, dh, NULL, G_TYPE_DATE_TIME, NULL);
                        gda_server_provider_handler_declare (provider, dh, NULL, G_TYPE_DATE, NULL);
                        g_object_unref (dh);
                }
@@ -1767,7 +1767,7 @@ gda_sqlite_provider_get_default_dbms_type (G_GNUC_UNUSED GdaServerProvider *prov
 
        if (type == GDA_TYPE_TIME)
                return "time";
-       if (type == GDA_TYPE_TIMESTAMP)
+       if (type == G_TYPE_DATE_TIME)
                return "timestamp";
        if (type == G_TYPE_DATE)
                return "date";
@@ -3280,36 +3280,25 @@ gda_sqlite_provider_statement_execute (GdaServerProvider *provider, GdaConnectio
                                               g_date_get_month (ts), g_date_get_day (ts));
                        SQLITE3_CALL (sqlite3_bind_text) (ps->sqlite_stmt, i, str, -1, g_free);
                }
-               else if (G_VALUE_TYPE (value) == GDA_TYPE_TIMESTAMP) {
-                       GString *string;
-                       GdaTimestamp *timestamp;
+               else if (g_type_is_a (G_VALUE_TYPE (value), G_TYPE_DATE_TIME)) {
+                       GDateTime *timestamp;
                        gboolean tofree = FALSE;
 
-                       timestamp = (GdaTimestamp *) gda_value_get_timestamp (value);
+                       timestamp = (GDateTime *) g_value_get_boxed (value);
 
-                       string = g_string_new ("");
-                       if (gda_timestamp_get_timezone (timestamp) != GDA_TIMEZONE_INVALID) {
+                       if (g_date_time_get_utc_offset (timestamp) != 0) { // FIXME: This should be supported 
now
                                /* SQLite cant' store timezone information, so if timezone information is
-                                * provided, we do our best and convert it to GMT */
-                               timestamp = gda_timestamp_copy (timestamp);
+                                * provided, we do our best and convert it to UTC */
+                               GTimeZone *tz = g_time_zone_new ("Z");
+                               timestamp = g_date_time_to_timezone (timestamp, tz);
                                tofree = TRUE;
-                               gda_timestamp_change_timezone (timestamp, 0);
                        }
-
-                       g_string_append_printf (string, "%04u-%02u-%02u %02u:%02u:%02u",
-                                               gda_timestamp_get_year (timestamp),
-                                               gda_timestamp_get_month (timestamp),
-                                               gda_timestamp_get_day (timestamp),
-                                               gda_timestamp_get_hour (timestamp),
-                                               gda_timestamp_get_minute (timestamp),
-                                               gda_timestamp_get_second (timestamp));
-                       if (gda_timestamp_get_fraction (timestamp) > 0)
-                               g_string_append_printf (string, ".%lu", gda_timestamp_get_fraction 
(timestamp));
+                       gchar *string = g_date_time_format (timestamp, "%FT%H%M%S");
 
                        if (tofree)
-                               gda_timestamp_free (timestamp);
+                               g_date_time_unref (timestamp);
 
-                       SQLITE3_CALL (sqlite3_bind_text) (ps->sqlite_stmt, i, g_string_free (string, FALSE), 
-1, g_free);
+                       SQLITE3_CALL (sqlite3_bind_text) (ps->sqlite_stmt, i, string, -1, g_free);
                }
                else if (G_VALUE_TYPE (value) == GDA_TYPE_NUMERIC) {
                        const GdaNumeric *gdan;
diff --git a/libgda/sqlite/gda-sqlite-recordset.c b/libgda/sqlite/gda-sqlite-recordset.c
index 98411e644..22db1e26a 100644
--- a/libgda/sqlite/gda-sqlite-recordset.c
+++ b/libgda/sqlite/gda-sqlite-recordset.c
@@ -558,7 +558,7 @@ fetch_next_sqlite_row (GdaSqliteRecordset *model, gboolean do_store, GError **er
                                        gda_time_free (timegda);
                                }
                                else if (g_type_is_a (type, G_TYPE_DATE_TIME)) {
-                                       GdaTimestamp* timestamp = gda_parse_iso8601_timestamp (
+                                       GDateTime* timestamp = gda_parse_iso8601_timestamp (
                                                                          (gchar *) SQLITE3_CALL 
(sqlite3_column_text) (ps->sqlite_stmt,
                                                                                real_col));
                                        if (timestamp == NULL) {
@@ -571,7 +571,7 @@ fetch_next_sqlite_row (GdaSqliteRecordset *model, gboolean do_store, GError **er
                                        }
                                        else {
                                                g_value_set_boxed (value, timestamp);
-                                         gda_timestamp_free (timestamp);
+                                         g_date_time_unref (timestamp);
                                        }
                                }
                                else if (type == G_TYPE_CHAR) {
diff --git a/libgda/sqlite/gda-sqlite-util.c b/libgda/sqlite/gda-sqlite-util.c
index 9606f8ef1..27f3b70bc 100644
--- a/libgda/sqlite/gda-sqlite-util.c
+++ b/libgda/sqlite/gda-sqlite-util.c
@@ -91,7 +91,7 @@ _gda_sqlite_compute_types_hash (SqliteConnectionData *cdata)
                array [i] = type;
                g_hash_table_insert (hash, "time", array + i);
 
-               type = GDA_TYPE_TIMESTAMP;
+               type = G_TYPE_DATE_TIME;
                i++;
                array [i] = type;
                g_hash_table_insert (hash, "timestamp", array + i);
diff --git a/libgda/sqlite/virtual/gda-vconnection-hub.c b/libgda/sqlite/virtual/gda-vconnection-hub.c
index 530e53396..62dd7d7ea 100644
--- a/libgda/sqlite/virtual/gda-vconnection-hub.c
+++ b/libgda/sqlite/virtual/gda-vconnection-hub.c
@@ -696,11 +696,11 @@ create_value_from_sqlite3_gvalue (GType type, GValue *svalue, GError **error)
                        gda_time_free (timegda);
                }
        }
-       else if (g_type_is_a (type, GDA_TYPE_TIMESTAMP)) {
+       else if (g_type_is_a (type, G_TYPE_DATE_TIME)) {
                if (!g_type_is_a (G_VALUE_TYPE (svalue), G_TYPE_STRING))
                        allok = FALSE;
                else {
-                       GdaTimestamp* timestamp = gda_parse_iso8601_timestamp (g_value_get_string (svalue));
+                       GDateTime* timestamp = gda_parse_iso8601_timestamp (g_value_get_string (svalue));
                        if (timestamp == NULL) {
                                g_set_error (error, GDA_SERVER_PROVIDER_ERROR,
                                             GDA_SERVER_PROVIDER_DATA_ERROR,
@@ -710,7 +710,7 @@ create_value_from_sqlite3_gvalue (GType type, GValue *svalue, GError **error)
                        }
                        else {
         g_value_set_boxed (value, timestamp);
-                         gda_timestamp_free (timestamp);
+                         g_date_time_unref (timestamp);
       }
                }
        }
diff --git a/libgda/sqlite/virtual/gda-vprovider-data-model.c 
b/libgda/sqlite/virtual/gda-vprovider-data-model.c
index f105e4ed3..ce3e62cb7 100644
--- a/libgda/sqlite/virtual/gda-vprovider-data-model.c
+++ b/libgda/sqlite/virtual/gda-vprovider-data-model.c
@@ -698,7 +698,7 @@ virtualCreate (sqlite3 *db, void *pAux, int argc, const char *const *argv, sqlit
                        type = "date";
                else if (gtype == GDA_TYPE_TIME)
                        type = "time";
-               else if (gtype == GDA_TYPE_TIMESTAMP)
+               else if (gtype == G_TYPE_DATE_TIME)
                        type = "timestamp";
                else if (gtype == GDA_TYPE_SHORT)
                        type = "short";
diff --git a/providers/ldap/gda-ldap-util.c b/providers/ldap/gda-ldap-util.c
index 76d07f895..da2c06641 100644
--- a/providers/ldap/gda-ldap-util.c
+++ b/providers/ldap/gda-ldap-util.c
@@ -151,7 +151,7 @@ static LdapAttrType ldap_types [] = {
        },
        { "1.3.6.1.4.1.1466.115.121.1.24",
          "Generalized Time",
-         -4 /*GDA_TYPE_TIMESTAMP*/
+         -4 /*G_TYPE_DATE_TIME*/
        },
        { "1.3.6.1.4.1.1466.115.121.1.25",
          "Guide",
@@ -323,7 +323,7 @@ gda_ldap_get_type_info (const gchar *oid)
                        else if (type->gtype == -3)
                                type->gtype = GDA_TYPE_NUMERIC;
                        else if (type->gtype == -4)
-                               type->gtype = GDA_TYPE_TIMESTAMP;
+                               type->gtype = G_TYPE_DATE_TIME;
                        g_hash_table_insert (hash, type->oid, type);
                }
                if (oid)
@@ -951,7 +951,7 @@ GValue *
 gda_ldap_attr_value_to_g_value (LdapConnectionData *cdata, GType type, BerValue *bv)
 {
        GValue *value = NULL;
-       if ((type == GDA_TYPE_TIMESTAMP) ||
+       if ((type == G_TYPE_DATE_TIME) ||
            (type == G_TYPE_DATE)) {
                /* see ftp://ftp.rfc-editor.org/in-notes/rfc4517.txt,
                 * section 3.3.13: Generalized Time
@@ -995,18 +995,18 @@ gda_ldap_attr_value_to_g_value (LdapConnectionData *cdata, GType type, BerValue
                        if (!ptm)
                                return NULL;
 
-                       if (type == GDA_TYPE_TIMESTAMP) {
-                               GdaTimestamp *ts = gda_timestamp_new ();
-                               gda_timestamp_set_year (ts, ptm->tm_year + 1900);
-                               gda_timestamp_set_month (ts, ptm->tm_mon + 1);
-                               gda_timestamp_set_day (ts, ptm->tm_mday);
-                               gda_timestamp_set_hour (ts, ptm->tm_hour);
-                               gda_timestamp_set_minute (ts, ptm->tm_min);
-                               gda_timestamp_set_second (ts, ptm->tm_sec);
-                               gda_timestamp_set_timezone (ts, GDA_TIMEZONE_INVALID);
-                               value = gda_value_new (type);
-                               gda_value_set_timestamp (value, ts);
-                               gda_timestamp_free (ts);
+                       if (g_type_is_a (type, G_TYPE_DATE_TIME)) {
+                               GTimeZone *tz = g_time_zone_new ("Z"); // UTC
+                               GDateTime *ts = g_date_time_new (tz,
+                                                                                                             
                                                   ptm->tm_year + 1900,
+                                                                                                             
                                                   ptm->tm_mon + 1,
+                                                                                                             
                                                   ptm->tm_mday,
+                                                                                                             
                                                   ptm->tm_hour,
+                                                                                                             
                                                   ptm->tm_min,
+                                                                                                             
                                                   ptm->tm_sec);
+                               value = gda_value_new (G_TYPE_DATE_TIME);
+                               g_value_set_boxed (value, ts);
+                               g_date_time_unref (ts);
                        }
                        else {
                                GDate *date;
@@ -1045,49 +1045,49 @@ gda_ldap_attr_g_value_to_value (LdapConnectionData *cdata, const GValue *cvalue)
                bv->bv_val = g_strdup (cstr);
                bv->bv_len = strlen (cstr);
        }
-       else if (G_VALUE_TYPE (cvalue) == GDA_TYPE_TIMESTAMP) {
-               GdaTimestamp *ts;
+       else if (G_VALUE_TYPE (cvalue) == G_TYPE_DATE_TIME) {
+               GDateTime *ts;
                gchar *str;
-               ts = (GdaTimestamp*) gda_value_get_timestamp (cvalue);
-               if (gda_timestamp_get_fraction (ts) == 0) {
-                       if (gda_timestamp_get_timezone (ts) == GDA_TIMEZONE_INVALID)
+               ts = g_value_get_boxed (cvalue);
+               if (g_date_time_get_second (ts) == (gint) g_date_time_get_seconds (ts)) {
+                       if (g_date_time_get_utc_offset (ts) == 0)
                                str = g_strdup_printf ("%04d-%02d-%02dT%02d:%02d:%02d",
-                                                                                                             
           gda_timestamp_get_year (ts),
-                                                                                                             
           gda_timestamp_get_month (ts),
-                                                                                                             
           gda_timestamp_get_day (ts),
-                                                                                                             
           gda_timestamp_get_hour (ts),
-                                                                                                             
           gda_timestamp_get_minute (ts),
-                                                                                                             
           gda_timestamp_get_second (ts));
+                                                                                                             
           g_date_time_get_year (ts),
+                                                                                                             
           g_date_time_get_month (ts),
+                                                                                                             
           g_date_time_get_day_of_month (ts),
+                                                                                                             
           g_date_time_get_hour (ts),
+                                                                                                             
           g_date_time_get_minute (ts),
+                                                                                                             
           g_date_time_get_second (ts));
                        else {
                                str = g_strdup_printf ("%04d-%02d-%02dT%02d:%02d:%02d",
-                                                                                                             
           gda_timestamp_get_year (ts),
-                                                                                                             
           gda_timestamp_get_month (ts),
-                                                                                                             
           gda_timestamp_get_day (ts),
-                                                                                                             
           gda_timestamp_get_hour (ts),
-                                                                                                             
           gda_timestamp_get_minute (ts),
-                                                                                                             
           gda_timestamp_get_second (ts));
+                                                                                                             
           g_date_time_get_year (ts),
+                                                                                                             
           g_date_time_get_month (ts),
+                                                                                                             
           g_date_time_get_day_of_month (ts),
+                                                                                                             
           g_date_time_get_hour (ts),
+                                                                                                             
           g_date_time_get_minute (ts),
+                                                                                                             
           g_date_time_get_second (ts));
                                TO_IMPLEMENT;
                        }
                }
                else {
-                       if (gda_timestamp_get_timezone (ts) == GDA_TIMEZONE_INVALID)
+                       if (g_date_time_get_utc_offset (ts) == 0)
                                str = g_strdup_printf ("%04d-%02d-%02dT%02d:%02d:%02d,%lu",
-                                                                                                             
           gda_timestamp_get_year (ts),
-                                                                                                             
           gda_timestamp_get_month (ts),
-                                                                                                             
           gda_timestamp_get_day (ts),
-                                                                                                             
           gda_timestamp_get_hour (ts),
-                                                                                                             
           gda_timestamp_get_minute (ts),
-                                                                                                             
           gda_timestamp_get_second (ts),
-                                                                                                             
           gda_timestamp_get_fraction (ts));
+                                                                                                             
           g_date_time_get_year (ts),
+                                                                                                             
           g_date_time_get_month (ts),
+                                                                                                             
           g_date_time_get_day_of_month (ts),
+                                                                                                             
           g_date_time_get_hour (ts),
+                                                                                                             
           g_date_time_get_minute (ts),
+                                                                                                             
           g_date_time_get_second (ts),
+                                                                                                             
           (gulong) ((g_date_time_get_seconds (ts) - g_date_time_get_second (ts)) * 1000000.0));
                        else {
                                str = g_strdup_printf ("%04d-%02d-%02dT%02d:%02d:%02d,%lu",
-                                                                                                             
           gda_timestamp_get_year (ts),
-                                                                                                             
           gda_timestamp_get_month (ts),
-                                                                                                             
           gda_timestamp_get_day (ts),
-                                                                                                             
           gda_timestamp_get_hour (ts),
-                                                                                                             
           gda_timestamp_get_minute (ts),
-                                                                                                             
           gda_timestamp_get_second (ts),
-                                                                                                             
           gda_timestamp_get_fraction (ts));
+                                                                                                             
           g_date_time_get_year (ts),
+                                                                                                             
           g_date_time_get_month (ts),
+                                                                                                             
           g_date_time_get_day_of_month (ts),
+                                                                                                             
           g_date_time_get_hour (ts),
+                                                                                                             
           g_date_time_get_minute (ts),
+                                                                                                             
           g_date_time_get_second (ts),
+                                                                                                             
           (gulong) ((g_date_time_get_seconds (ts) - g_date_time_get_second (ts)) * 1000000.0));
                                TO_IMPLEMENT;
                        }
                }
diff --git a/providers/mysql/gda-mysql-provider.c b/providers/mysql/gda-mysql-provider.c
index 781d7e18e..a87d920e7 100644
--- a/providers/mysql/gda-mysql-provider.c
+++ b/providers/mysql/gda-mysql-provider.c
@@ -1280,7 +1280,7 @@ gda_mysql_provider_get_data_handler (GdaServerProvider  *provider,
                 }
        }
        else if ((type == GDA_TYPE_TIME) ||
-                (type == GDA_TYPE_TIMESTAMP) ||
+                (type == G_TYPE_DATE_TIME) ||
                 (type == G_TYPE_DATE)) {
                dh = gda_server_provider_handler_find (provider, NULL, type, NULL);
                 if (!dh) {
@@ -1289,7 +1289,7 @@ gda_mysql_provider_get_data_handler (GdaServerProvider  *provider,
                                                        G_DATE_MONTH, G_DATE_DAY, '-', FALSE);
                         gda_server_provider_handler_declare (provider, dh, NULL, G_TYPE_DATE, NULL);
                         gda_server_provider_handler_declare (provider, dh, NULL, GDA_TYPE_TIME, NULL);
-                        gda_server_provider_handler_declare (provider, dh, NULL, GDA_TYPE_TIMESTAMP, NULL);
+                        gda_server_provider_handler_declare (provider, dh, NULL, G_TYPE_DATE_TIME, NULL);
                         g_object_unref (dh);
                 }
        }
@@ -1356,7 +1356,7 @@ gda_mysql_provider_get_default_dbms_type (GdaServerProvider  *provider,
                return "varchar";
        if (type == GDA_TYPE_TIME)
                return "time";
-       if (type == GDA_TYPE_TIMESTAMP)
+       if (type == G_TYPE_DATE_TIME)
                return "timestamp";
        if (type == G_TYPE_CHAR)
                return "tinyint";
@@ -2387,36 +2387,35 @@ gda_mysql_provider_statement_execute (GdaServerProvider               *provider,
                                return obj;
                        }
                }
-               else if (G_VALUE_TYPE (value) == GDA_TYPE_TIMESTAMP) {
-                       GdaTimestamp *ts;
+               else if (G_VALUE_TYPE (value) == G_TYPE_DATE_TIME) {
+                       GDateTime *ts;
 
-                       ts = (GdaTimestamp*) gda_value_get_timestamp (value);
+                       ts = (GDateTime*) g_value_get_boxed (value);
                        if (!ts) {
                                mysql_bind_param[i].buffer_type = MYSQL_TYPE_NULL;
                                mysql_bind_param[i].is_null = (my_bool*)1;
                        }
                        else {
                                gboolean tofree = FALSE;
-                               if (gda_timestamp_get_timezone (ts) != GDA_TIMEZONE_INVALID) {
+                               if (g_date_time_get_utc_offset (ts) != 0) {
                                        /* MySQL does not store timezone information, so if timezone 
information is
                                         * provided, we do our best and convert it to GMT */
-                                       ts = gda_timestamp_copy (ts);
+                                       ts = g_date_time_to_utc (ts);
                                        tofree = TRUE;
-                                       gda_timestamp_change_timezone (ts, 0);
                                }
 
                                MYSQL_TIME *mtime;
                                mtime = g_new0 (MYSQL_TIME, 1);
                                mem_to_free = g_slist_prepend (mem_to_free, mtime);
-                               mtime->year = gda_timestamp_get_year (ts);
-                               mtime->month = gda_timestamp_get_month (ts);
-                               mtime->day = gda_timestamp_get_day (ts);
-                               mtime->hour = gda_timestamp_get_hour (ts);
-                               mtime->minute = gda_timestamp_get_minute (ts);
-                               mtime->second = gda_timestamp_get_second (ts);
-                               mtime->second_part = gda_timestamp_get_fraction (ts);
+                               mtime->year = g_date_time_get_year (ts);
+                               mtime->month = g_date_time_get_month (ts);
+                               mtime->day = g_date_time_get_day_of_month (ts);
+                               mtime->hour = g_date_time_get_hour (ts);
+                               mtime->minute = g_date_time_get_minute (ts);
+                               mtime->second = g_date_time_get_second (ts);
+                               mtime->second_part = (glong) ((g_date_time_get_seconds (ts) - 
g_date_time_get_second (ts)) * 1000000.0);
                                if (tofree)
-                                       gda_timestamp_free (ts);
+                                       g_date_time_unref (ts);
 
                                mysql_bind_param[i].buffer_type= MYSQL_TYPE_TIMESTAMP;
                                mysql_bind_param[i].buffer= (char *)mtime;
diff --git a/providers/mysql/gda-mysql-recordset.c b/providers/mysql/gda-mysql-recordset.c
index cd0a0a6b9..bd633a0d5 100644
--- a/providers/mysql/gda-mysql-recordset.c
+++ b/providers/mysql/gda-mysql-recordset.c
@@ -339,7 +339,7 @@ _gda_mysql_type_to_gda (G_GNUC_UNUSED MysqlConnectionData *cdata,
                break;
        case MYSQL_TYPE_TIMESTAMP:
        case MYSQL_TYPE_DATETIME:
-               gtype = GDA_TYPE_TIMESTAMP;
+               gtype = G_TYPE_DATE_TIME;
                break;
        case MYSQL_TYPE_DATE:
                gtype = G_TYPE_DATE;
@@ -874,17 +874,17 @@ new_row_from_mysql_stmt (GdaMysqlRecordset *imodel, G_GNUC_UNUSED gint rownum, G
                                         (bvalue.year != 0) ? bvalue.year : 1970);
                                g_value_take_boxed (value, date);
                        }
-                       else if (type == GDA_TYPE_TIMESTAMP) {
-                               GdaTimestamp *timestamp = gda_timestamp_new_from_values (bvalue.year,
-                                                                                            bvalue.month,
-                                                                                            bvalue.day,
-                                                                                            bvalue.hour,
-                                                                                            bvalue.minute,
-                                                                                            bvalue.second,
-                                                                                            
bvalue.second_part,
-                                                                                            0); /* GMT */
-                               gda_value_set_timestamp (value, timestamp);
-                gda_timestamp_free (timestamp);
+                       else if (type == G_TYPE_DATE_TIME) {
+                               GTimeZone *tz = g_time_zone_new ("Z"); /* UTC */
+                               GDateTime *timestamp = g_date_time_new (tz,
+                                                                                                             
                                                                                  bvalue.year,
+                                                                                                             
                                                                                  bvalue.month,
+                                                                                                             
                                                                                  bvalue.day,
+                                                                                                             
                                                                                  bvalue.hour,
+                                                                                                             
                                                                                  bvalue.minute,
+                                                                                                             
                                                                                  (gdouble) bvalue.second + 
bvalue.second_part / 1000000.0);
+                               g_value_set_boxed (value, timestamp);
+                               g_date_time_unref (timestamp);
                        }
                        else {
                                gda_row_invalidate_value (row, value);
diff --git a/providers/postgres/gda-postgres-ddl.c b/providers/postgres/gda-postgres-ddl.c
index 4cbbf579f..1ee7d7d40 100644
--- a/providers/postgres/gda-postgres-ddl.c
+++ b/providers/postgres/gda-postgres-ddl.c
@@ -1041,16 +1041,16 @@ gda_postgres_render_CREATE_USER (GdaServerProvider *provider, GdaConnection *cnc
        }
        
        value = gda_server_operation_get_value_at (op, "/USER_DEF_P/VALIDITY");
-       if (value && G_VALUE_HOLDS (value, GDA_TYPE_TIMESTAMP)) {
+       if (value && G_VALUE_HOLDS (value, G_TYPE_DATE_TIME)) {
                if (value) {
                        GdaDataHandler *dh;
                        if (!with) {
                                g_string_append (string, " WITH");
                                with = TRUE;
                        }
-                       dh = gda_server_provider_get_data_handler_g_type (provider, cnc, GDA_TYPE_TIMESTAMP);
+                       dh = gda_server_provider_get_data_handler_g_type (provider, cnc, G_TYPE_DATE_TIME);
                        if (!dh)
-                               dh = gda_data_handler_get_default (GDA_TYPE_TIMESTAMP);
+                               dh = gda_data_handler_get_default (G_TYPE_DATE_TIME);
                        
                        g_string_append (string, " VALID UNTIL ");
                        tmp = gda_data_handler_get_sql_from_value (dh, value);
diff --git a/providers/postgres/gda-postgres-provider.c b/providers/postgres/gda-postgres-provider.c
index a682808db..d79714efc 100644
--- a/providers/postgres/gda-postgres-provider.c
+++ b/providers/postgres/gda-postgres-provider.c
@@ -490,7 +490,7 @@ adapt_to_date_format (GdaServerProvider *provider, GdaConnection *cnc, GError **
                        cdata->date_sep = sep;
 
                        GdaDataHandler *dh;
-                       dh = gda_postgres_provider_get_data_handler (provider, cnc, GDA_TYPE_TIMESTAMP, NULL);
+                       dh = gda_postgres_provider_get_data_handler (provider, cnc, G_TYPE_DATE_TIME, NULL);
                         gda_handler_time_set_sql_spec ((GdaHandlerTime *) dh, parts[0],
                                                        parts[1], parts[2], sep, FALSE);
                         gda_handler_time_set_str_spec ((GdaHandlerTime *) dh, parts[0],
@@ -1442,7 +1442,7 @@ gda_postgres_provider_get_data_handler (GdaServerProvider *provider, GdaConnecti
                 }
        }
        else if ((type == GDA_TYPE_TIME) ||
-                (type == GDA_TYPE_TIMESTAMP) ||
+                (type == G_TYPE_DATE_TIME) ||
                 (type == G_TYPE_DATE)) {
                dh = gda_server_provider_handler_find (provider, cnc, type, NULL);
                 if (!dh) {
@@ -1451,7 +1451,7 @@ gda_postgres_provider_get_data_handler (GdaServerProvider *provider, GdaConnecti
                                                        G_DATE_MONTH, G_DATE_DAY, '-', FALSE);
                         gda_server_provider_handler_declare (provider, dh, cnc, G_TYPE_DATE, NULL);
                         gda_server_provider_handler_declare (provider, dh, NULL, GDA_TYPE_TIME, NULL);
-                        gda_server_provider_handler_declare (provider, dh, cnc, GDA_TYPE_TIMESTAMP, NULL);
+                        gda_server_provider_handler_declare (provider, dh, cnc, G_TYPE_DATE_TIME, NULL);
                         g_object_unref (dh);
                 }
        }
@@ -1506,7 +1506,7 @@ gda_postgres_provider_get_default_dbms_type (GdaServerProvider *provider, GdaCon
                 return "varchar";
         if (type == GDA_TYPE_TIME)
                 return "time";
-        if (type == GDA_TYPE_TIMESTAMP)
+        if (type == G_TYPE_DATE_TIME)
                 return "timestamp";
         if (type == G_TYPE_CHAR)
                 return "smallint";
@@ -2221,23 +2221,22 @@ gda_postgres_provider_statement_execute (GdaServerProvider *provider, GdaConnect
                        g_assert (timdh);
                        param_values [i] = gda_handler_time_get_no_locale_str_from_value (timdh, value);
                }
-               else if (G_VALUE_TYPE (value) == GDA_TYPE_TIMESTAMP) {
+               else if (G_VALUE_TYPE (value) == G_TYPE_DATE_TIME) {
                        GdaHandlerTime *timdh;
                        timdh = GDA_HANDLER_TIME (gda_server_provider_get_data_handler_g_type (provider, cnc,
                                                                                               G_VALUE_TYPE 
(value)));
                        g_assert (timdh);
 
-                       GdaTimestamp *timestamp;
-                       timestamp = (GdaTimestamp *) gda_value_get_timestamp (value);
-                       if (gda_timestamp_get_timezone (timestamp) != GDA_TIMEZONE_INVALID) {
+                       GDateTime *timestamp;
+                       timestamp = (GDateTime *) g_value_get_boxed (value);
+                       if (g_date_time_get_utc_offset (timestamp) != 0) { // FIXME: This should be supported 
now
                                /* PostgreSQL does not store timezone information, so if timezone information 
is
                                 * provided, we do our best and convert it to GMT */
-                               timestamp = gda_timestamp_copy (timestamp);
-                               gda_timestamp_change_timezone (timestamp, 0);
+                               timestamp = g_date_time_to_utc (timestamp);
                                GValue *rv;
-                               rv = gda_value_new (GDA_TYPE_TIMESTAMP);
-                               gda_value_set_timestamp (rv, timestamp);
-                               gda_timestamp_free (timestamp);
+                               rv = gda_value_new (G_TYPE_DATE_TIME);
+                               g_value_set_boxed (rv, timestamp);
+                               g_date_time_unref (timestamp);
                                param_values [i] = gda_handler_time_get_no_locale_str_from_value (timdh, rv);
                                gda_value_free (rv);
                        }
diff --git a/providers/postgres/gda-postgres-recordset.c b/providers/postgres/gda-postgres-recordset.c
index e7795f568..0502df727 100644
--- a/providers/postgres/gda-postgres-recordset.c
+++ b/providers/postgres/gda-postgres-recordset.c
@@ -672,15 +672,15 @@ set_value (GdaConnection *cnc, GdaRow *row, GValue *value, GType type, const gch
                gda_value_set_geometric_point (value, point);
                gda_geometric_point_free (point);
        }
-       else if (type == GDA_TYPE_TIMESTAMP) {
+       else if (type == G_TYPE_DATE_TIME) {
                PostgresConnectionData *cdata;
                cdata = (PostgresConnectionData*) gda_connection_internal_get_provider_data_error (cnc, 
error);
                if (cdata) {
-                       GdaTimestamp* timestamp = gda_parse_formatted_timestamp (thevalue, cdata->date_first, 
cdata->date_second,
+                       GDateTime* timestamp = gda_parse_formatted_timestamp (thevalue, cdata->date_first, 
cdata->date_second,
                                                           cdata->date_third, cdata->date_sep);
                        if (timestamp != NULL) {
                                g_value_set_boxed (value, timestamp);
-                         gda_timestamp_free (timestamp);
+                         g_date_time_unref (timestamp);
                        }
                        else {
                                gda_row_invalidate_value (row, value);
diff --git a/providers/reuseable/mysql/gda-mysql-reuseable.c b/providers/reuseable/mysql/gda-mysql-reuseable.c
index a5a1e82c2..013b57b04 100644
--- a/providers/reuseable/mysql/gda-mysql-reuseable.c
+++ b/providers/reuseable/mysql/gda-mysql-reuseable.c
@@ -245,7 +245,7 @@ mysql_name_to_g_type (const gchar *name, const gchar *conv_func_name)
        else if (!strcmp (name, "numeric"))
                return GDA_TYPE_NUMERIC;
        else if (!strncmp (name, "timestamp", 9))
-               return GDA_TYPE_TIMESTAMP;
+               return G_TYPE_DATE_TIME;
        else if (!strcmp (name, "date"))
                return G_TYPE_DATE;
        else if (!strncmp (name, "time", 4))
@@ -272,7 +272,7 @@ mysql_name_to_g_type (const gchar *name, const gchar *conv_func_name)
        if (!strncmp (conv_func_name, "float8", 6))
                return G_TYPE_DOUBLE;
        if (!strncmp (conv_func_name, "timestamp", 9))
-               return GDA_TYPE_TIMESTAMP;
+               return G_TYPE_DATE_TIME;
        if (!strncmp (conv_func_name, "time", 4))
                return GDA_TYPE_TIME;
        if (!strncmp (conv_func_name, "date", 4))
diff --git a/providers/reuseable/postgres/gda-postgres-reuseable.c 
b/providers/reuseable/postgres/gda-postgres-reuseable.c
index b00c2957f..efd688b00 100644
--- a/providers/reuseable/postgres/gda-postgres-reuseable.c
+++ b/providers/reuseable/postgres/gda-postgres-reuseable.c
@@ -262,7 +262,7 @@ postgres_name_to_g_type (const gchar *name, const gchar *conv_func_name)
        else if (!strcmp (name, "numeric"))
                return GDA_TYPE_NUMERIC;
        else if (!strncmp (name, "timestamp", 9))
-               return GDA_TYPE_TIMESTAMP;
+               return G_TYPE_DATE_TIME;
        else if (!strcmp (name, "date"))
                return G_TYPE_DATE;
        else if (!strncmp (name, "time", 4))
@@ -289,7 +289,7 @@ postgres_name_to_g_type (const gchar *name, const gchar *conv_func_name)
        if (!strncmp (conv_func_name, "float8", 6))
                return G_TYPE_DOUBLE;
        if (!strncmp (conv_func_name, "timestamp", 9))
-               return GDA_TYPE_TIMESTAMP;
+               return G_TYPE_DATE_TIME;
        if (!strncmp (conv_func_name, "time", 4))
                return GDA_TYPE_TIME;
        if (!strncmp (conv_func_name, "date", 4))
diff --git a/providers/skel-implementation/capi/gda-capi-provider.c 
b/providers/skel-implementation/capi/gda-capi-provider.c
index 38702dbf9..bc12f4981 100644
--- a/providers/skel-implementation/capi/gda-capi-provider.c
+++ b/providers/skel-implementation/capi/gda-capi-provider.c
@@ -885,7 +885,7 @@ gda_capi_provider_get_data_handler (GdaServerProvider *provider, GdaConnection *
                dh = NULL;
        }
        else if ((type == GDA_TYPE_TIME) ||
-                (type == GDA_TYPE_TIMESTAMP) ||
+                (type == G_TYPE_DATE_TIME) ||
                 (type == G_TYPE_DATE)) {
                TO_IMPLEMENT; /* define data handlers for these types */
                dh = NULL;
@@ -934,7 +934,7 @@ gda_capi_provider_get_default_dbms_type (GdaServerProvider *provider, GdaConnect
            (type == G_TYPE_OBJECT) ||
            (type == G_TYPE_STRING) ||
            (type == GDA_TYPE_TIME) ||
-           (type == GDA_TYPE_TIMESTAMP) ||
+           (type == G_TYPE_DATE_TIME) ||
            (type == G_TYPE_GTYPE))
                return "string";
 
@@ -945,7 +945,7 @@ gda_capi_provider_get_default_dbms_type (GdaServerProvider *provider, GdaConnect
        
        if (type == GDA_TYPE_TIME)
                return "time";
-       if (type == GDA_TYPE_TIMESTAMP)
+       if (type == G_TYPE_DATE_TIME)
                return "timestamp";
        if (type == G_TYPE_DATE)
                return "date";
diff --git a/providers/web/gda-web-provider.c b/providers/web/gda-web-provider.c
index 2791ccb3b..8e86d517a 100644
--- a/providers/web/gda-web-provider.c
+++ b/providers/web/gda-web-provider.c
@@ -1175,7 +1175,7 @@ gtype_to_webtype (GType type)
                 return "text";
         if (type == GDA_TYPE_TIME)
                 return "time";
-        if (type == GDA_TYPE_TIMESTAMP)
+        if (type == G_TYPE_DATE_TIME)
                 return "timestamp";
         if (type == G_TYPE_CHAR)
                 return "integer";
diff --git a/testing/gdaui-test-data-entries.c b/testing/gdaui-test-data-entries.c
index e7ac06d4d..54fbc17c8 100644
--- a/testing/gdaui-test-data-entries.c
+++ b/testing/gdaui-test-data-entries.c
@@ -102,7 +102,7 @@ get_handler (GType for_type)
                g_hash_table_insert (hash, (gpointer) G_TYPE_DOUBLE, gda_handler_numerical_new ());
                g_hash_table_insert (hash, (gpointer) GDA_TYPE_NUMERIC, gda_handler_numerical_new ());
                g_hash_table_insert (hash, (gpointer) GDA_TYPE_TIME, gda_handler_time_new ());
-               g_hash_table_insert (hash, (gpointer) GDA_TYPE_TIMESTAMP, gda_handler_time_new ());
+               g_hash_table_insert (hash, (gpointer) G_TYPE_DATE_TIME, gda_handler_time_new ());
                g_hash_table_insert (hash, (gpointer) G_TYPE_ULONG, gda_handler_type_new ());
        }
 
@@ -149,7 +149,7 @@ main (int argc, char **argv)
                                  G_TYPE_DATE, G_TYPE_DOUBLE,
                                  GDA_TYPE_GEOMETRIC_POINT, G_TYPE_OBJECT, G_TYPE_INT, 
                                  GDA_TYPE_NUMERIC, G_TYPE_FLOAT, GDA_TYPE_SHORT, GDA_TYPE_USHORT,
-                                 GDA_TYPE_TIME, GDA_TYPE_TIMESTAMP, G_TYPE_CHAR, G_TYPE_UCHAR, G_TYPE_UINT};
+                                 GDA_TYPE_TIME, G_TYPE_DATE_TIME, G_TYPE_CHAR, G_TYPE_UCHAR, G_TYPE_UINT};
        mainconf.test_type = TESTED_BASIC;
        if (test_type) {
                if (*test_type == 'f')
diff --git a/tools/browser/ldap-browser/entry-properties.c b/tools/browser/ldap-browser/entry-properties.c
index 369b7c274..63fcadc53 100644
--- a/tools/browser/ldap-browser/entry-properties.c
+++ b/tools/browser/ldap-browser/entry-properties.c
@@ -597,7 +597,7 @@ ad_1601_timestamp_to_string (const gchar *value, const gchar *attname)
        GdaDataHandler *dh;
        struct tm *stm;
        GValue tvalue;
-       GdaTimestamp *ts;
+       GDateTime *ts;
        time_t nsec = (time_t) i64;
        gchar *str;
 #ifdef HAVE_LOCALTIME_R
@@ -616,20 +616,20 @@ ad_1601_timestamp_to_string (const gchar *value, const gchar *attname)
        if (!stm)
                return NULL;
 
-       ts = gda_timestamp_new_from_values (stm->tm_year + 1900,
-                                      stm->tm_mon + 1,
-                                      stm->tm_mday,
-                                      stm->tm_hour,
-                                      stm->tm_min,
-                                      stm->tm_sec,
-                                      0,
-                                      0);
+       GTimeZone *tz = g_time_zone_new ("Z");
+       ts = g_date_time_new (tz,
+                                                                                               stm->tm_year 
+ 1900,
+                                                                                               stm->tm_mon + 
1,
+                                                                                               stm->tm_mday,
+                                                                                               stm->tm_hour,
+                                                                                               stm->tm_min,
+                                                                                               stm->tm_sec);
        memset (&tvalue, 0, sizeof (GValue));
        g_value_set_boxed (&tvalue, ts);
        dh = gda_data_handler_get_default (G_TYPE_DATE_TIME);
        str = gda_data_handler_get_str_from_value (dh, &tvalue);
        g_value_reset (&tvalue);
-       gda_timestamp_free (ts);
+       g_date_time_unref (ts);
        return str;
 }
 
diff --git a/tools/misc/information-schema-types.c b/tools/misc/information-schema-types.c
index 876dab6d6..23839c0cd 100644
--- a/tools/misc/information-schema-types.c
+++ b/tools/misc/information-schema-types.c
@@ -125,7 +125,7 @@ main (G_GNUC_UNUSED int argc, G_GNUC_UNUSED char** argv)
                                                        g_string_append (tmp_out_types_str, "G_TYPE_BOOLEAN");
                                                else if (type == G_TYPE_INT)
                                                        g_string_append (tmp_out_types_str, "G_TYPE_INT");
-                                               else if (type == GDA_TYPE_TIMESTAMP) {
+                                               else if (type == G_TYPE_DATE_TIME) {
                                                        xmlChar *tname;
                                                        tname = xmlGetProp (node, BAD_CAST "name");
                                                        g_print ("Warning: ignoring table %s because the '%s' 
type is "


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]