diff -aur Npgsql/src/NpgsqlTypes/NpgsqlDbType.cs Npgsql_me/src/NpgsqlTypes/NpgsqlDbType.cs
--- Npgsql/src/NpgsqlTypes/NpgsqlDbType.cs	2006-10-09 00:08:41.000000000 +0200
+++ Npgsql_me/src/NpgsqlTypes/NpgsqlDbType.cs	2007-04-19 17:00:53.000000000 +0200
@@ -53,6 +53,7 @@
         Text,
         Time,
         Timestamp,
+        Interval,
         Varchar,
         Refcursor,
         Inet,
diff -aur Npgsql/src/NpgsqlTypes/NpgsqlTypeConverters.cs Npgsql_me/src/NpgsqlTypes/NpgsqlTypeConverters.cs
--- Npgsql/src/NpgsqlTypes/NpgsqlTypeConverters.cs	2006-08-14 17:25:01.000000000 +0200
+++ Npgsql_me/src/NpgsqlTypes/NpgsqlTypeConverters.cs	2007-04-20 15:13:53.000000000 +0200
@@ -80,7 +80,9 @@
 			"yyyy-MM-dd HH:mm:ss.fffzz",
 			"yyyy-MM-dd HH:mm:ss.ffzz",
 			"yyyy-MM-dd HH:mm:ss.fzz",
-        };
+        };
+
+        private static readonly Regex intervalRegex = new Regex(@"^((?<days>-?\d+) (days|day)\s*)?(?<time>-?\d+:\d{1,2}:\d{1,2}(\.\d+)?)?$");
 
         /// <summary>
         /// Binary data.
@@ -193,6 +195,31 @@
         }
 
         /// <summary>
+        /// Convert a postgresql interval to a System.TimeSpan.
+        /// </summary>
+        internal static Object ToTimeSpan(NpgsqlBackendTypeInfo TypeInfo, String BackendData, Int16 TypeSize, Int32 TypeModifier)
+        {
+            // quantity unit [quantity unit ... ]
+            TimeSpan value = new TimeSpan();
+            Match m = intervalRegex.Match(BackendData);
+            if(m.Success == false)
+            {
+                throw new InvalidCastException("Unsupported interval value");
+            }
+            Group g = m.Groups[4];  // m.Groups["days"]
+            if(g.Success)
+            {
+                value = value.Add(TimeSpan.FromDays(double.Parse(g.Value, CultureInfo.InvariantCulture)));
+            }
+            g = m.Groups[5];         // m.Groups["time"]
+            if(g.Success)
+            {
+                value = value.Add(TimeSpan.Parse(g.Value));
+            }
+            return value;
+        }
+
+        /// <summary>
         /// Convert a postgresql money to a System.Decimal.
         /// </summary>
         internal static Object ToMoney(NpgsqlBackendTypeInfo TypeInfo, String BackendData, Int16 TypeSize, Int32 TypeModifier)
@@ -280,6 +307,26 @@
         }
 
         /// <summary>
+        /// Convert to a postgresql interval.
+        /// </summary>
+        internal static String ToTimeSpan(NpgsqlNativeTypeInfo TypeInfo, Object NativeData)
+        {
+            TimeSpan value = (TimeSpan) NativeData;
+            StringBuilder buf = new StringBuilder();
+            bool ago = (value.Ticks < 0);
+            if(ago)
+            {
+                value = value.Negate();
+            }
+            buf.AppendFormat(CultureInfo.InvariantCulture, "{0} {1}:{2}:{3}.{4:000000}", value.Days, value.Hours, value.Minutes, value.Seconds, value.Milliseconds);
+            if(ago)
+            {
+                buf.Append(" ago");
+            }
+            return buf.ToString();
+        }
+
+        /// <summary>
         /// Convert to a postgres money.
         /// </summary>
         internal static String ToMoney(NpgsqlNativeTypeInfo TypeInfo, Object NativeData)
diff -aur Npgsql/src/NpgsqlTypes/NpgsqlTypesHelper.cs Npgsql_me/src/NpgsqlTypes/NpgsqlTypesHelper.cs
--- Npgsql/src/NpgsqlTypes/NpgsqlTypesHelper.cs	2006-10-09 00:08:41.000000000 +0200
+++ Npgsql_me/src/NpgsqlTypes/NpgsqlTypesHelper.cs	2007-04-20 09:44:53.000000000 +0200
@@ -245,6 +245,11 @@
                 NativeTypeMapping.AddType("timestamptz", NpgsqlDbType.TimestampTZ, DbType.DateTime, true,
                 new ConvertNativeToBackendHandler(BasicNativeToBackendTypeConverter.ToDateTime));
 
+                NativeTypeMapping.AddType("interval", NpgsqlDbType.Interval, DbType.Object, true,
+                new ConvertNativeToBackendHandler(BasicNativeToBackendTypeConverter.ToTimeSpan));
+
+                NativeTypeMapping.AddTypeAlias("interval", typeof(TimeSpan));
+
                 NativeTypeMapping.AddType("point", NpgsqlDbType.Point, DbType.Object, true,
                 new ConvertNativeToBackendHandler(ExtendedNativeToBackendTypeConverter.ToPoint));
 
@@ -387,6 +392,9 @@
                     new NpgsqlBackendTypeInfo(0, "timestamptz", NpgsqlDbType.Timestamp, DbType.DateTime, typeof(DateTime),
                         new ConvertBackendToNativeHandler(BasicBackendToNativeTypeConverter.ToDateTime)),
 
+                    new NpgsqlBackendTypeInfo(0, "interval", NpgsqlDbType.Interval, DbType.Object, typeof(TimeSpan),
+                        new ConvertBackendToNativeHandler(BasicBackendToNativeTypeConverter.ToTimeSpan)),
+
 
                     new NpgsqlBackendTypeInfo(0, "point", NpgsqlDbType.Point, DbType.Object, typeof(NpgsqlPoint),
                         new ConvertBackendToNativeHandler(ExtendedBackendToNativeTypeConverter.ToPoint)),
Only in Npgsql_me/src/: obj
