--- a/src/Pure/General/sql.scala Sun Mar 05 19:33:01 2023 +0100
+++ b/src/Pure/General/sql.scala Sun Mar 05 20:41:14 2023 +0100
@@ -321,6 +321,8 @@
def rebuild(): Unit = ()
+ def now(): Date
+
/* types */
@@ -434,6 +436,8 @@
override def is_server: Boolean = false
override def rebuild(): Unit = using_statement("VACUUM")(_.execute())
+ override def now(): Date = Date.now()
+
def sql_type(T: SQL.Type.Value): SQL.Source = SQL.sql_type_sqlite(T)
def update_date(stmt: SQL.Statement, i: Int, date: Date): Unit =
@@ -507,6 +511,13 @@
override def toString: String = name
override def is_server: Boolean = true
+ override def now(): Date = {
+ val now = SQL.Column.date("now")
+ using_statement("SELECT NOW() as " + now.ident)(
+ stmt => stmt.execute_query().iterator(_.date(now)).nextOption
+ ).getOrElse(error("Failed to get current date/time from database server " + toString))
+ }
+
def sql_type(T: SQL.Type.Value): SQL.Source = SQL.sql_type_postgresql(T)
// see https://jdbc.postgresql.org/documentation/head/8-date-time.html