diff --git a/app/models.py b/app/models.py
index f9996be3d0f2cd090aef5aecc6a3476a2c4eb96f..2a4d96414cd5c5187fca144a4d841be12622c79a 100644
--- a/app/models.py
+++ b/app/models.py
@@ -31,6 +31,16 @@ HOST_NAME_RE = re.compile('^[a-z0-9\-]{2,20}$')
 make_versioned(plugins=[FlaskUserPlugin()])
 
 
+# See http://docs.sqlalchemy.org/en/latest/core/compiler.html#utc-timestamp-function
+class utcnow(sa.sql.expression.FunctionElement):
+    type = sa.types.DateTime()
+
+
+@sa.ext.compiler.compiles(utcnow, 'postgresql')
+def pg_utcnow(element, compiler, **kw):
+        return "TIMEZONE('utc', CURRENT_TIMESTAMP)"
+
+
 @login_manager.user_loader
 def load_user(user_id):
     """User loader callback for flask-login
@@ -220,8 +230,8 @@ class Item(db.Model):
     }
 
     id = db.Column(db.Integer, primary_key=True)
-    _created = db.Column(db.DateTime, default=db.func.now())
-    _updated = db.Column(db.DateTime, default=db.func.now(), onupdate=db.func.now())
+    _created = db.Column(db.DateTime, default=utcnow())
+    _updated = db.Column(db.DateTime, default=utcnow(), onupdate=utcnow())
     ics_id = db.Column(db.Text, unique=True, index=True)
     serial_number = db.Column(db.Text, nullable=False)
     manufacturer_id = db.Column(db.Integer, db.ForeignKey('manufacturer.id'))
@@ -301,7 +311,7 @@ class Item(db.Model):
 
 class ItemComment(db.Model):
     id = db.Column(db.Integer, primary_key=True)
-    timestamp = db.Column(db.DateTime, default=db.func.now(), index=True)
+    timestamp = db.Column(db.DateTime, default=utcnow(), index=True)
     text = db.Column(db.Text, nullable=False)
     user_id = db.Column(db.Integer, db.ForeignKey('user_account.id'), nullable=False)
     item_id = db.Column(db.Integer, db.ForeignKey('item.id'), nullable=False)