diff -urN birthdays/birthdays.install birthdays_pgsql_fixed/birthdays.install
--- birthdays/birthdays.install	2007-04-03 23:39:20.000000000 +0100
+++ birthdays_pgsql_fixed/birthdays.install	2007-04-20 15:40:05.752375000 +0100
@@ -1,38 +1,42 @@
-<?php
-// $Id: birthdays.install,v 1.2 2007/04/03 22:39:20 maartenvg Exp $
-
-/**
- * Birthdays module schema
- */
-function birthdays_install() {
-  switch ($GLOBALS['db_type']) {
-    case 'mysql':
-    case 'mysqli':
-      db_query("CREATE TABLE IF NOT EXISTS {dob} (
-        uid int(10) unsigned NOT NULL default 0,
-        birthday date NOT NULL default '0000-00-00',
-        PRIMARY KEY (uid)
-      );");
-      break;
-    case 'pgsql':
-      // TODO
-      break;
-  }
-}
-
-function birthdays_uninstall() {
-  db_query('DROP TABLE {dob}');
-  variable_del('birthdays_last_cron');
-  variable_del('birthdays_list_number');
-  variable_del('birthdays_days_number');
-  variable_del('birthdays_remind');
-  variable_del('birthdays_send_user');
-  variable_del('birthdays_send_user_message');
-  variable_del('birthdays_send_user_subject');     
-  variable_del('birthdays_use_starsign');
-  variable_del('birthdays_starsign_link');
-  variable_del('birthdays_date_format');
-  variable_del('birthdays_required');
-  variable_del('birthdays_profile_category');
-}
-
+<?php
+// $Id: birthdays.install,v 1.2 2007/04/03 22:39:20 maartenvg Exp $
+
+/**
+ * Birthdays module schema
+ */
+function birthdays_install() {
+  switch ($GLOBALS['db_type']) {
+    case 'mysql':
+    case 'mysqli':
+      db_query("CREATE TABLE IF NOT EXISTS {dob} (
+        uid int(10) unsigned NOT NULL default 0,
+        birthday date NOT NULL default '0000-00-00',
+        PRIMARY KEY (uid)
+      );");
+      break;
+    case 'pgsql':
+      db_query("CREATE TABLE  {dob} (
+	uid int NOT NULL default 0 check(uid >= 0),
+	birthday date NOT NULL default '0000-01-01',
+	PRIMARY KEY (uid)
+      );");
+      break;
+  }
+}
+
+function birthdays_uninstall() {
+  db_query('DROP TABLE {dob}');
+  variable_del('birthdays_last_cron');
+  variable_del('birthdays_list_number');
+  variable_del('birthdays_days_number');
+  variable_del('birthdays_remind');
+  variable_del('birthdays_send_user');
+  variable_del('birthdays_send_user_message');
+  variable_del('birthdays_send_user_subject');     
+  variable_del('birthdays_use_starsign');
+  variable_del('birthdays_starsign_link');
+  variable_del('birthdays_date_format');
+  variable_del('birthdays_required');
+  variable_del('birthdays_profile_category');
+}
+
diff -urN birthdays/birthdays.module birthdays_pgsql_fixed/birthdays.module
--- birthdays/birthdays.module	2007-04-03 23:39:20.000000000 +0100
+++ birthdays_pgsql_fixed/birthdays.module	2007-04-20 16:35:37.699625000 +0100
@@ -272,18 +272,42 @@
 				if (db_num_rows($result) == 0) {
 					db_query("INSERT INTO {dob} (uid, birthday) VALUES ('%s', '%s-%s-%s');", $user->uid,$year,$month,$day);
 				} else {
-				
-					db_query("UPDATE {dob} SET birthday = '%s-%s-%s' WHERE uid = '%s' LIMIT 1", $year,$month,$day,$user->uid);
+				    switch ($GLOBALS['db_type']) {
+                        case 'mysql':
+                        case 'mysqli':
+					        db_query("UPDATE {dob} SET birthday = '%s-%s-%s' WHERE uid = '%s' LIMIT 1", $year,$month,$day,$user->uid);
+                            break;
+                        case 'pgsql':
+                            db_query("UPDATE {dob} SET birthday = '%s-%s-%s' WHERE uid = '%s';", $year,$month,$day,$user->uid);
+                            break;
+                    }
 				}
 				
 				break;
-			case 'view':
-				$queryResult = db_query("SELECT day(birthday) as d, 
-                  month(birthday) as m, 
-                  year(birthday) as y, 
-                  DATE_FORMAT( NOW( ) , '%%Y' ) - DATE_FORMAT( birthday, '%%Y' ) - 
-                    ( DATE_FORMAT( NOW( ) , '%%m%%d' ) < DATE_FORMAT( birthday, '%%m%%d' ) ) AS age 
-                  FROM {dob} WHERE uid = '%s' LIMIT 1", $user->uid);
+			case 'view':
+                switch ($GLOBALS['db_type']) {
+                    case 'mysql':
+                    case 'mysqli':
+				        $queryResult = db_query("SELECT day(birthday) as d, 
+                          month(birthday) as m, 
+                          year(birthday) as y, 
+                          DATE_FORMAT( NOW( ) , '%%Y' ) - DATE_FORMAT( birthday, '%%Y' ) - 
+                            ( DATE_FORMAT( NOW( ) , '%%m%%d' ) < DATE_FORMAT( birthday, '%%m%%d' ) ) AS age 
+                        FROM {dob} WHERE uid = '%s' LIMIT 1", $user->uid);
+                        break;
+                    case 'pgsql':
+                        $queryResult = db_query("SELECT extract (day from birthday) as d, 
+                            extract (month from birthday) as m, 
+                            extract (year from birthday) as y, 
+                            extract (year from CURRENT_DATE ) - extract (year from birthday) -
+                                (CASE WHEN ((extract (month from CURRENT_DATE ) < extract (month from birthday )) OR (
+                                    (extract (month from CURRENT_DATE ) = extract (month from birthday )) AND
+                                    (extract (day from CURRENT_DATE ) < extract (day from birthday) ))) THEN 1 ELSE 0 end
+                                    ) AS age 
+                            FROM {dob} WHERE uid = '%s' LIMIT 1", $user->uid);
+                        break;
+                }
+                    
 				
 				if (db_num_rows($queryResult)>0)
 				{
@@ -305,11 +329,21 @@
             break;
         }
 				if (user_access('edit DOB') || user_access('administer users'))
-				{
-					$queryResult = db_query("SELECT day(birthday) as d, 
-                  month(birthday) as m, 
-                  year(birthday) as y 
-                  FROM {dob} WHERE uid = '%s' LIMIT 1", $user->uid);
+				{
+                    switch ($GLOBALS['db_type']) {
+                        case 'mysql':
+                        case 'mysqli':
+                            $queryResult = db_query("SELECT day(birthday) as d, 
+                          month(birthday) as m, 
+                          year(birthday) as y 
+                          FROM {dob} WHERE uid = '%s' LIMIT 1", $user->uid);
+                        case 'pgsql':
+                            $queryResult = db_query("SELECT extract (day from birthday) as d, 
+                                extract (month from birthday) as m, 
+                                extract (year from birthday) as y
+                                FROM {dob} WHERE uid = '%s' LIMIT 1", $user->uid);
+                            break;
+                    }
 					$birthday = db_fetch_object($queryResult);
 					$dob = array('day' => $birthday->d,
 					             'month' => $birthday->m,
