BUGFIX MSSQLDatabase date formatting uses style code 120 which represents a typical datetime format without millseconds

This commit is contained in:
Sean Harvey 2010-05-18 10:47:05 +00:00
parent 012849fad9
commit 39576dd4e0

View File

@ -1349,7 +1349,7 @@ class MSSQLDatabase extends SS_Database {
} }
/** /**
* Function to return an SQL datetime expression that can be used with SQLite3 * Function to return an SQL datetime expression for MSSQL
* used for querying a datetime in a certain format * used for querying a datetime in a certain format
* @param string $date to be formated, can be either 'now', literal datetime like '1973-10-14 10:30:00' or field name, e.g. '"SiteTree"."Created"' * @param string $date to be formated, can be either 'now', literal datetime like '1973-10-14 10:30:00' or field name, e.g. '"SiteTree"."Created"'
* @param string $format to be used, supported specifiers: * @param string $format to be used, supported specifiers:
@ -1363,7 +1363,6 @@ class MSSQLDatabase extends SS_Database {
* @return string SQL datetime expression to query for a formatted datetime * @return string SQL datetime expression to query for a formatted datetime
*/ */
function formattedDatetimeClause($date, $format) { function formattedDatetimeClause($date, $format) {
preg_match_all('/%(.)/', $format, $matches); preg_match_all('/%(.)/', $format, $matches);
foreach($matches[1] as $match) if(array_search($match, array('Y','m','d','H','i','s','U')) === false) user_error('formattedDatetimeClause(): unsupported format character %' . $match, E_USER_WARNING); foreach($matches[1] as $match) if(array_search($match, array('Y','m','d','H','i','s','U')) === false) user_error('formattedDatetimeClause(): unsupported format character %' . $match, E_USER_WARNING);
@ -1409,7 +1408,7 @@ class MSSQLDatabase extends SS_Database {
} }
/** /**
* Function to return an SQL datetime expression that can be used with SQLite3 * Function to return an SQL datetime expression for MSSQL.
* used for querying a datetime addition * used for querying a datetime addition
* @param string $date, can be either 'now', literal datetime like '1973-10-14 10:30:00' or field name, e.g. '"SiteTree"."Created"' * @param string $date, can be either 'now', literal datetime like '1973-10-14 10:30:00' or field name, e.g. '"SiteTree"."Created"'
* @param string $interval to be added, use the format [sign][integer] [qualifier], e.g. -1 Day, +15 minutes, +1 YEAR * @param string $interval to be added, use the format [sign][integer] [qualifier], e.g. -1 Day, +15 minutes, +1 YEAR
@ -1424,7 +1423,6 @@ class MSSQLDatabase extends SS_Database {
* @return string SQL datetime expression to query for a datetime (YYYY-MM-DD hh:mm:ss) which is the result of the addition * @return string SQL datetime expression to query for a datetime (YYYY-MM-DD hh:mm:ss) which is the result of the addition
*/ */
function datetimeIntervalClause($date, $interval) { function datetimeIntervalClause($date, $interval) {
$trans = array( $trans = array(
'year' => 'yy', 'year' => 'yy',
'month' => 'mm', 'month' => 'mm',
@ -1446,11 +1444,11 @@ class MSSQLDatabase extends SS_Database {
} else if(preg_match('/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/i', $date)) { } else if(preg_match('/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/i', $date)) {
$date = "'$date'"; $date = "'$date'";
} }
return "LEFT(CONVERT(VARCHAR, DATEADD(" . $trans[strtolower($matches[2])] . ", " . (int)$matches[1] . ", $date), 121), 19)"; return "LEFT(CONVERT(VARCHAR, DATEADD(" . $trans[strtolower($matches[2])] . ", " . (int)$matches[1] . ", $date), 120), 19)";
} }
/** /**
* Function to return an SQL datetime expression that can be used with SQLite3 * Function to return an SQL datetime expression for MSSQL.
* used for querying a datetime substraction * used for querying a datetime substraction
* @param string $date1, can be either 'now', literal datetime like '1973-10-14 10:30:00' or field name, e.g. '"SiteTree"."Created"' * @param string $date1, can be either 'now', literal datetime like '1973-10-14 10:30:00' or field name, e.g. '"SiteTree"."Created"'
* @param string $date2 to be substracted of $date1, can be either 'now', literal datetime like '1973-10-14 10:30:00' or field name, e.g. '"SiteTree"."Created"' * @param string $date2 to be substracted of $date1, can be either 'now', literal datetime like '1973-10-14 10:30:00' or field name, e.g. '"SiteTree"."Created"'