summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--adodb.inc.php29
-rw-r--r--drivers/adodb-ado.inc.php6
-rw-r--r--drivers/adodb-ado5.inc.php6
-rw-r--r--drivers/adodb-db2.inc.php2
-rw-r--r--drivers/adodb-oci8.inc.php4
-rw-r--r--drivers/adodb-odbtp.inc.php4
-rw-r--r--drivers/adodb-oracle.inc.php4
-rw-r--r--drivers/adodb-sqlite.inc.php8
-rw-r--r--drivers/adodb-sqlite3.inc.php4
-rw-r--r--drivers/adodb-sybase.inc.php4
-rw-r--r--tests/testsqlite.php158
11 files changed, 191 insertions, 38 deletions
diff --git a/adodb.inc.php b/adodb.inc.php
index bc9e675a..ff2e08b3 100644
--- a/adodb.inc.php
+++ b/adodb.inc.php
@@ -3395,7 +3395,7 @@ http://www.stanford.edu/dept/itss/docs/oracle/10g/server.101/b10759/statements_1
$d = ADOConnection::UnixDate($d);
}
- return adodb_date($this->fmtDate,$d);
+ return date($this->fmtDate,$d);
}
function BindDate($d) {
@@ -3437,7 +3437,7 @@ http://www.stanford.edu/dept/itss/docs/oracle/10g/server.101/b10759/statements_1
# strlen(14) allows YYYYMMDDHHMMSS format
if (!is_string($ts) || (is_numeric($ts) && strlen($ts)<14)) {
- return adodb_date($this->fmtTimeStamp,$ts);
+ return date($this->fmtTimeStamp,$ts);
}
if ($ts === 'null') {
@@ -3448,7 +3448,7 @@ http://www.stanford.edu/dept/itss/docs/oracle/10g/server.101/b10759/statements_1
return "'$ts'";
}
$ts = ADOConnection::UnixTimeStamp($ts);
- return adodb_date($this->fmtTimeStamp,$ts);
+ return date($this->fmtTimeStamp,$ts);
}
/**
@@ -3461,7 +3461,7 @@ http://www.stanford.edu/dept/itss/docs/oracle/10g/server.101/b10759/statements_1
if (is_object($v)) {
// odbtp support
//( [year] => 2004 [month] => 9 [day] => 4 [hour] => 12 [minute] => 44 [second] => 8 [fraction] => 0 )
- return adodb_mktime($v->hour,$v->minute,$v->second,$v->month,$v->day, $v->year);
+ return mktime($v->hour,$v->minute,$v->second,$v->month,$v->day, $v->year);
}
if (is_numeric($v) && strlen($v) !== 8) {
@@ -3476,7 +3476,7 @@ http://www.stanford.edu/dept/itss/docs/oracle/10g/server.101/b10759/statements_1
}
// h-m-s-MM-DD-YY
- return @adodb_mktime(0,0,0,$rr[2],$rr[3],$rr[1]);
+ return mktime(0,0,0,$rr[2],$rr[3],$rr[1]);
}
@@ -3490,7 +3490,7 @@ http://www.stanford.edu/dept/itss/docs/oracle/10g/server.101/b10759/statements_1
if (is_object($v)) {
// odbtp support
//( [year] => 2004 [month] => 9 [day] => 4 [hour] => 12 [minute] => 44 [second] => 8 [fraction] => 0 )
- return adodb_mktime($v->hour,$v->minute,$v->second,$v->month,$v->day, $v->year);
+ return mktime($v->hour,$v->minute,$v->second,$v->month,$v->day, $v->year);
}
if (!preg_match(
@@ -3503,9 +3503,9 @@ http://www.stanford.edu/dept/itss/docs/oracle/10g/server.101/b10759/statements_1
// h-m-s-MM-DD-YY
if (!isset($rr[5])) {
- return adodb_mktime(0,0,0,$rr[2],$rr[3],$rr[1]);
+ return mktime(0,0,0,$rr[2],$rr[3],$rr[1]);
}
- return @adodb_mktime($rr[5],$rr[6],$rr[7],$rr[2],$rr[3],$rr[1]);
+ return mktime($rr[5],$rr[6],$rr[7],$rr[2],$rr[3],$rr[1]);
}
/**
@@ -3531,8 +3531,7 @@ http://www.stanford.edu/dept/itss/docs/oracle/10g/server.101/b10759/statements_1
// pre-TIMESTAMP_FIRST_YEAR
}
- return ($gmt) ? adodb_gmdate($fmt,$tt) : adodb_date($fmt,$tt);
-
+ return ($gmt) ? gmdate($fmt,$tt) : date($fmt,$tt);
}
/**
@@ -3550,7 +3549,7 @@ http://www.stanford.edu/dept/itss/docs/oracle/10g/server.101/b10759/statements_1
}
# strlen(14) allows YYYYMMDDHHMMSS format
if (is_numeric($v) && strlen($v)<14) {
- return ($gmt) ? adodb_gmdate($fmt,$v) : adodb_date($fmt,$v);
+ return ($gmt) ? gmdate($fmt,$v) : date($fmt,$v);
}
$tt = $this->UnixTimeStamp($v);
// $tt == -1 if pre TIMESTAMP_FIRST_YEAR
@@ -3560,7 +3559,7 @@ http://www.stanford.edu/dept/itss/docs/oracle/10g/server.101/b10759/statements_1
if ($tt == 0) {
return $this->emptyTimeStamp;
}
- return ($gmt) ? adodb_gmdate($fmt,$tt) : adodb_date($fmt,$tt);
+ return ($gmt) ? gmdate($fmt,$tt) : date($fmt,$tt);
}
/**
@@ -4527,7 +4526,7 @@ class ADORecordSet implements IteratorAggregate {
*/
function UserTimeStamp($v,$fmt='Y-m-d H:i:s') {
if (is_numeric($v) && strlen($v)<14) {
- return adodb_date($fmt,$v);
+ return date($fmt,$v);
}
$tt = $this->UnixTimeStamp($v);
// $tt == -1 if pre TIMESTAMP_FIRST_YEAR
@@ -4537,7 +4536,7 @@ class ADORecordSet implements IteratorAggregate {
if ($tt === 0) {
return $this->emptyTimeStamp;
}
- return adodb_date($fmt,$tt);
+ return date($fmt,$tt);
}
@@ -4557,7 +4556,7 @@ class ADORecordSet implements IteratorAggregate {
} else if ($tt == -1) {
// pre-TIMESTAMP_FIRST_YEAR
}
- return adodb_date($fmt,$tt);
+ return date($fmt,$tt);
}
diff --git a/drivers/adodb-ado.inc.php b/drivers/adodb-ado.inc.php
index 30edf28b..5164c651 100644
--- a/drivers/adodb-ado.inc.php
+++ b/drivers/adodb-ado.inc.php
@@ -574,7 +574,7 @@ class ADORecordSet_ado extends ADORecordSet {
$val=(float) variant_cast($f->value,VT_R8)*3600*24-2209161600;
else
$val = $f->value;
- $this->fields[] = adodb_date('Y-m-d H:i:s',$val);
+ $this->fields[] = date('Y-m-d H:i:s',$val);
}
break;
case 133:// A date value (yyyymmdd)
@@ -589,8 +589,8 @@ class ADORecordSet_ado extends ADORecordSet {
if (!is_numeric($f->value)) $val = variant_date_to_timestamp($f->value);
else $val = $f->value;
- if (($val % 86400) == 0) $this->fields[] = adodb_date('Y-m-d',$val);
- else $this->fields[] = adodb_date('Y-m-d H:i:s',$val);
+ if (($val % 86400) == 0) $this->fields[] = date('Y-m-d',$val);
+ else $this->fields[] = date('Y-m-d H:i:s',$val);
}
break;
case 1: // null
diff --git a/drivers/adodb-ado5.inc.php b/drivers/adodb-ado5.inc.php
index 53bdc6a1..6e5759e3 100644
--- a/drivers/adodb-ado5.inc.php
+++ b/drivers/adodb-ado5.inc.php
@@ -621,7 +621,7 @@ class ADORecordSet_ado extends ADORecordSet {
$val= (float) variant_cast($f->value,VT_R8)*3600*24-2209161600;
else
$val = $f->value;
- $this->fields[] = adodb_date('Y-m-d H:i:s',$val);
+ $this->fields[] = date('Y-m-d H:i:s',$val);
}
break;
case 133:// A date value (yyyymmdd)
@@ -636,8 +636,8 @@ class ADORecordSet_ado extends ADORecordSet {
if (!is_numeric($f->value)) $val = variant_date_to_timestamp($f->value);
else $val = $f->value;
- if (($val % 86400) == 0) $this->fields[] = adodb_date('Y-m-d',$val);
- else $this->fields[] = adodb_date('Y-m-d H:i:s',$val);
+ if (($val % 86400) == 0) $this->fields[] = date('Y-m-d',$val);
+ else $this->fields[] = date('Y-m-d H:i:s',$val);
}
break;
case 1: // null
diff --git a/drivers/adodb-db2.inc.php b/drivers/adodb-db2.inc.php
index f04541c8..eb865c0b 100644
--- a/drivers/adodb-db2.inc.php
+++ b/drivers/adodb-db2.inc.php
@@ -396,7 +396,7 @@ class ADODB_db2 extends ADOConnection {
{
if (empty($ts) && $ts !== 0) return 'null';
if (is_string($ts)) $ts = ADORecordSet::unixTimeStamp($ts);
- return 'TO_DATE('.adodb_date($this->fmtTimeStamp,$ts).",'YYYY-MM-DD HH24:MI:SS')";
+ return 'TO_DATE('.date($this->fmtTimeStamp,$ts).",'YYYY-MM-DD HH24:MI:SS')";
}
/**
diff --git a/drivers/adodb-oci8.inc.php b/drivers/adodb-oci8.inc.php
index d8b71c6e..38b3df4b 100644
--- a/drivers/adodb-oci8.inc.php
+++ b/drivers/adodb-oci8.inc.php
@@ -396,7 +396,7 @@ END;
$ds = $d->format($this->fmtDate);
}
else {
- $ds = adodb_date($this->fmtDate,$d);
+ $ds = date($this->fmtDate,$d);
}
return "TO_DATE(".$ds.",'".$this->dateformat."')";
@@ -425,7 +425,7 @@ END;
$tss = $ts->format("'Y-m-d H:i:s'");
}
else {
- $tss = adodb_date("'Y-m-d H:i:s'",$ts);
+ $tss = date("'Y-m-d H:i:s'",$ts);
}
return $tss;
diff --git a/drivers/adodb-odbtp.inc.php b/drivers/adodb-odbtp.inc.php
index b4e12601..46bf9c4a 100644
--- a/drivers/adodb-odbtp.inc.php
+++ b/drivers/adodb-odbtp.inc.php
@@ -81,7 +81,7 @@ class ADODB_odbtp extends ADOConnection{
if ($isfld) return "convert(date, $d, 120)";
if (is_string($d)) $d = ADORecordSet::UnixDate($d);
- $d = adodb_date($this->fmtDate,$d);
+ $d = date($this->fmtDate,$d);
return "convert(date, $d, 120)";
}
@@ -91,7 +91,7 @@ class ADODB_odbtp extends ADOConnection{
if ($isfld) return "convert(datetime, $d, 120)";
if (is_string($d)) $d = ADORecordSet::UnixDate($d);
- $d = adodb_date($this->fmtDate,$d);
+ $d = date($this->fmtDate,$d);
return "convert(datetime, $d, 120)";
}
*/
diff --git a/drivers/adodb-oracle.inc.php b/drivers/adodb-oracle.inc.php
index 5cd4bedf..7c061b07 100644
--- a/drivers/adodb-oracle.inc.php
+++ b/drivers/adodb-oracle.inc.php
@@ -41,7 +41,7 @@ class ADODB_oracle extends ADOConnection {
{
if (is_string($d)) $d = ADORecordSet::UnixDate($d);
if (is_object($d)) $ds = $d->format($this->fmtDate);
- else $ds = adodb_date($this->fmtDate,$d);
+ else $ds = date($this->fmtDate,$d);
return 'TO_DATE('.$ds.",'YYYY-MM-DD')";
}
@@ -51,7 +51,7 @@ class ADODB_oracle extends ADOConnection {
if (is_string($ts)) $ts = ADORecordSet::UnixTimeStamp($ts);
if (is_object($ts)) $ds = $ts->format($this->fmtDate);
- else $ds = adodb_date($this->fmtTimeStamp,$ts);
+ else $ds = date($this->fmtTimeStamp,$ts);
return 'TO_DATE('.$ds.",'RRRR-MM-DD, HH:MI:SS AM')";
}
diff --git a/drivers/adodb-sqlite.inc.php b/drivers/adodb-sqlite.inc.php
index 697d43a6..00638e70 100644
--- a/drivers/adodb-sqlite.inc.php
+++ b/drivers/adodb-sqlite.inc.php
@@ -36,8 +36,8 @@ class ADODB_sqlite extends ADOConnection {
var $hasInsertID = true; /// supports autoincrement ID?
var $hasAffectedRows = true; /// supports affected rows for update/delete?
var $metaTablesSQL = "SELECT name FROM sqlite_master WHERE type='table' ORDER BY name";
- var $sysDate = "adodb_date('Y-m-d')";
- var $sysTimeStamp = "adodb_date('Y-m-d H:i:s')";
+ var $sysDate = "date('Y-m-d')";
+ var $sysTimeStamp = "date('Y-m-d H:i:s')";
var $fmtTimeStamp = "'Y-m-d H:i:s'";
function ServerInfo()
@@ -164,14 +164,12 @@ class ADODB_sqlite extends ADOConnection {
function SQLDate($fmt, $col=false)
{
$fmt = $this->qstr($fmt);
- return ($col) ? "adodb_date2($fmt,$col)" : "adodb_date($fmt)";
+ return ($col) ? "strftime($fmt,$col)" : "strftime($fmt)";
}
function _createFunctions()
{
- @sqlite_create_function($this->_connectionID, 'adodb_date', 'adodb_date', 1);
- @sqlite_create_function($this->_connectionID, 'adodb_date2', 'adodb_date2', 2);
}
diff --git a/drivers/adodb-sqlite3.inc.php b/drivers/adodb-sqlite3.inc.php
index 8141af6e..0cceafb1 100644
--- a/drivers/adodb-sqlite3.inc.php
+++ b/drivers/adodb-sqlite3.inc.php
@@ -304,13 +304,11 @@ class ADODB_sqlite3 extends ADOConnection {
$fmt = str_replace($fromChars,$toChars,$fmt);
$fmt = $this->qstr($fmt);
- return ($col) ? "adodb_date2($fmt,$col)" : "adodb_date($fmt)";
+ return ($col) ? "strftime($fmt,$col)" : "strftime($fmt)";
}
function _createFunctions()
{
- $this->_connectionID->createFunction('adodb_date', 'adodb_date', 1);
- $this->_connectionID->createFunction('adodb_date2', 'adodb_date2', 2);
}
/** @noinspection PhpUnusedParameterInspection */
diff --git a/drivers/adodb-sybase.inc.php b/drivers/adodb-sybase.inc.php
index 33442685..abadb51c 100644
--- a/drivers/adodb-sybase.inc.php
+++ b/drivers/adodb-sybase.inc.php
@@ -408,7 +408,7 @@ class ADORecordSet_array_sybase extends ADORecordSet_array {
$themth = $ADODB_sybase_mths[$themth];
if ($themth <= 0) return false;
// h-m-s-MM-DD-YY
- return adodb_mktime(0,0,0,$themth,$rr[2],$rr[3]);
+ return mktime(0,0,0,$themth,$rr[2],$rr[3]);
}
static function UnixTimeStamp($v)
@@ -435,6 +435,6 @@ class ADORecordSet_array_sybase extends ADORecordSet_array {
break;
}
// h-m-s-MM-DD-YY
- return adodb_mktime($rr[4],$rr[5],0,$themth,$rr[2],$rr[3]);
+ return mktime($rr[4],$rr[5],0,$themth,$rr[2],$rr[3]);
}
}
diff --git a/tests/testsqlite.php b/tests/testsqlite.php
new file mode 100644
index 00000000..9f461e45
--- /dev/null
+++ b/tests/testsqlite.php
@@ -0,0 +1,158 @@
+<?php
+include '../adodb.inc.php';
+// set up timezone
+$default_timezone = 'UTC';
+date_default_timezone_set($default_timezone);
+$database = 'sqltest.sqlite';
+
+// Create SQLITE test database
+$slitedb = new SQLite3($database);
+
+// connect to test database
+$driver = 'sqlite3';
+$db = adoNewConnection($driver);
+$server = '';
+$user = '';
+$password = '';
+$db->connect($server, $user, $password, $database);
+
+// drop table if it exits
+$rs = $db->execute('drop table testtable;');
+
+// create test table
+$sql = 'CREATE TABLE IF NOT EXISTS testtable (
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
+ description TEXT,
+ whenithappened DATETIME
+)';
+$rs = $db->execute($sql);
+
+// populate test table
+$db->execute("INSERT INTO 'testtable' VALUES (5,'DEE658E8D9ACEB94A1E554CF7EDA6944','1728-02-28 09:17:52');");
+$db->execute("INSERT INTO 'testtable' VALUES (6,'367B5BAE40BEB89BA5AB22DFD79C93ED','1933-05-14 01:29:16');");
+$db->execute("INSERT INTO 'testtable' VALUES (7,'4F67DEF4750E6B25FA339CAA10A82A6E','2071-06-19 15:05:25');");
+$db->execute("INSERT INTO 'testtable' VALUES (8,'C0EB1A398C56D7CE70A04E702A43E402','1667-06-05 17:23:17');");
+$db->execute("INSERT INTO 'testtable' VALUES (9,'9A4E57224F44AC0799076C91062F9485','1453-06-29 03:05:28');");
+$db->execute("INSERT INTO 'testtable' VALUES (10,'85B5837F5A27A11070CAFA199D4F0B1B','2073-07-30 00:18:08');");
+$db->execute("INSERT INTO 'testtable' VALUES (11,'1D23F47779EB50AE8E1E1A83EE85AAF6','1819-02-12 19:24:06');");
+$db->execute("INSERT INTO 'testtable' VALUES (12,'30AA2C1946647145CC1F600D933A629A','1961-11-03 08:02:49');");
+$db->execute("INSERT INTO 'testtable' VALUES (13,'EB1ACD052F65CBC9AEBC7555A54FD2F8','1707-09-30 21:01:26');");
+$db->execute("INSERT INTO 'testtable' VALUES (14,'AAAA1087D8579A32431E2A88D3C1BCF2','1444-12-03 09:21:53');");
+$db->execute("INSERT INTO 'testtable' VALUES (15,'A4CAA5F87768299D2E54E66B7A1D826C','2007-09-01 03:35:32');");
+$db->execute("INSERT INTO 'testtable' VALUES (16,'9F77801A55697494BF71F79372A42D68','1502-10-21 12:55:00');");
+$db->execute("INSERT INTO 'testtable' VALUES (17,'603D8088154FE3B5630402F03F4239D4','1846-05-23 09:08:53');");
+$db->execute("INSERT INTO 'testtable' VALUES (18,'2D1A9307C08ADA0D4343ABCEC445DC4B','1503-05-24 19:46:01');");
+$db->execute("INSERT INTO 'testtable' VALUES (19,'495A03828CA0DF1051313EF9393B1C04','1671-04-05 17:47:42');");
+$db->execute("INSERT INTO 'testtable' VALUES (20,'8A80F450A8B3FE1F2CE18644282614FC','1757-02-16 21:14:58');");
+$db->execute("INSERT INTO 'testtable' VALUES (21,'0C68910EAF1785B8999C2A2F4308AD28','1973-02-01 20:35:10');");
+$db->execute("INSERT INTO 'testtable' VALUES (22,'91A44DE32E0A49A7E5619FE244EB78E8','1924-06-03 03:24:22');");
+$db->execute("INSERT INTO 'testtable' VALUES (23,'6588C425286C15465DD68E6459BB0037','1614-04-10 19:12:42');");
+$db->execute("INSERT INTO 'testtable' VALUES (24,'256F51DEED8907B0CE55291E83A47345','1602-08-31 02:37:22');");
+$db->execute("INSERT INTO 'testtable' VALUES (25,'00760C3E69F078DFD635ECE2C70141D8','2091-03-13 03:59:41');");
+$db->execute("INSERT INTO 'testtable' VALUES (26,'98F58B63EC27E489045318334719D453','1490-09-06 02:50:04');");
+
+//==========================
+// This code tests sqlite access. It also validates that the commands above worked!
+//==========================
+$sql = 'select * from testtable order by id limit 4';
+$rs = $db->execute($sql);
+$actual = $rs->getRows();
+$expected = array(
+ array(
+ 0 => 5,
+ 'id' => 5,
+ 1 => 'DEE658E8D9ACEB94A1E554CF7EDA6944',
+ 'description' => 'DEE658E8D9ACEB94A1E554CF7EDA6944',
+ 2 => '1728-02-28 09:17:52',
+ 'whenithappened' => '1728-02-28 09:17:52',
+ ),
+ array(
+ 0 => 6,
+ 'id' => 6,
+ 1 => '367B5BAE40BEB89BA5AB22DFD79C93ED',
+ 'description' => '367B5BAE40BEB89BA5AB22DFD79C93ED',
+ 2 => '1933-05-14 01:29:16',
+ 'whenithappened' => '1933-05-14 01:29:16',
+ ),
+ array(
+ 0 => 7,
+ 'id' => 7,
+ 1 => '4F67DEF4750E6B25FA339CAA10A82A6E',
+ 'description' => '4F67DEF4750E6B25FA339CAA10A82A6E',
+ 2 => '2071-06-19 15:05:25',
+ 'whenithappened' => '2071-06-19 15:05:25',
+ ),
+ array(
+ 0 => 8,
+ 'id' => 8,
+ 1 => 'C0EB1A398C56D7CE70A04E702A43E402',
+ 'description' => 'C0EB1A398C56D7CE70A04E702A43E402',
+ 2 => '1667-06-05 17:23:17',
+ 'whenithappened' => '1667-06-05 17:23:17',
+ ),
+);
+print "Test sqlite access first 4 rows: " . htmlspecialchars($sql);
+testAssert($rs, $actual, $expected);
+
+//==========================
+// This code tests SQLDate
+//==========================
+$tests = [
+ '',
+ '1974-02-25',
+ '1474-02-25 05:04:16',
+ '2474-02-25 05:04:16',
+];
+foreach ($tests as $dt) {
+ testDateFormatting($dt, false);
+}
+function testDateFormatting($dt, $debug = false) {
+ global $db;
+ if ($dt=='') {
+ $date = $db->SQLDate('%d-%m-%Y Q %H:%M:%S');
+ } else {
+ $date = $db->SQLDate('%d-%m-%Y Q %H:%M:%S', $db->qStr($dt));
+ }
+ $sql = "SELECT $date";
+ print "Test SQLDate: " . htmlspecialchars($sql);
+ $db->debug = $debug;
+ $rs = $db->SelectLimit($sql, 1);
+ if ($dt=='') {
+ $d = date('d-m-Y') . ' Q ' . date('H:i:s');
+ } else {
+ $ts = ADOConnection::UnixTimeStamp($dt);
+ $d = date('d-m-Y', $ts) . ' Q ' . date('H:i:s', $ts);
+ }
+ testAssert($rs, reset($rs->fields), $d);
+}
+
+//==========================
+// These are helper functions
+//==========================
+
+function Err($msg) {
+ print "$msg\n";
+ flush();
+}
+
+function Trace($Msg) {
+ echo "\n".$Msg;
+}
+
+function DieTrace($Msg) {
+ die("\n".$Msg);
+}
+
+function testAssert($rs, $actual, $expected) {
+ global $db;
+ if (!$rs) {
+ echo "\n";
+ Err("SQLDate query returned no recordset");
+ echo $db->ErrorMsg(), "\n";
+ } elseif ($expected != $actual) {
+ echo "\n";
+ Err("SQLDate failed\nexpected: $expected\nact:$actual\nerror: " . $db->ErrorMsg());
+ } else {
+ echo " \u{2713}\n";
+ }
+} \ No newline at end of file