diff options
| -rw-r--r-- | adodb.inc.php | 29 | ||||
| -rw-r--r-- | drivers/adodb-ado.inc.php | 6 | ||||
| -rw-r--r-- | drivers/adodb-ado5.inc.php | 6 | ||||
| -rw-r--r-- | drivers/adodb-db2.inc.php | 2 | ||||
| -rw-r--r-- | drivers/adodb-oci8.inc.php | 4 | ||||
| -rw-r--r-- | drivers/adodb-odbtp.inc.php | 4 | ||||
| -rw-r--r-- | drivers/adodb-oracle.inc.php | 4 | ||||
| -rw-r--r-- | drivers/adodb-sqlite.inc.php | 8 | ||||
| -rw-r--r-- | drivers/adodb-sqlite3.inc.php | 4 | ||||
| -rw-r--r-- | drivers/adodb-sybase.inc.php | 4 | ||||
| -rw-r--r-- | tests/testsqlite.php | 158 |
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 |
