Skip to content
Extraits de code Groupes Projets
Valider 0c3b5755 rédigé par marcimat's avatar marcimat
Parcourir les fichiers

La fonction DATE_FORMAT() en mysql dispose de différents formats tel que %Y %m...

La fonction DATE_FORMAT() en mysql dispose de différents formats tel que %Y %m %d pour formatter une date.
En SQLite, on mappe cette fonction absente nativement sur strftime() de PHP.
Cependant, certains paramètres ne correspondent pas entre les deux !
On propose de convertir à la volée les paramètres qui ont un équivalent sous un autre nom,
Et de logguer si on trouve des paramètres dont on sait qu'ils n'existent pas ou retournent une valeur totalement différente à celle attendue.
parent e3d7c4bb
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -120,7 +120,6 @@ function _sqlite_init_functions(&$sqlite) {
'YEAR' => array('_sqlite_func_year', 1)
);
foreach ($fonctions as $f => $r) {
_sqlite_add_function($sqlite, $f, $r);
}
......@@ -315,8 +314,29 @@ function _sqlite_func_regexp_match($cherche, $quoi) {
return $return;
}
// https://code.spip.net/@_sqlite_func_strftime
function _sqlite_func_strftime($date, $conv) {
// ok : %a %b %d %e %H %I %l %j %k %m %p %r %S %T %w %y %Y
// on ne sait pas en gérer certains...
static $errors = [];
static $mysql_to_php_not_ok = ['%c', '%D', '%f', '%U', '%V', '%W', '%X'];
static $mysql_to_php = [
'%h' => '%I',
'%i' => '%M',
'%M' => '%B',
'%s' => '%S',
'%u' => '%U',
'%v' => '%V',
'%x' => '%G',
];
$count = 0;
str_replace($mysql_to_php_not_ok, '', $conv, $count);
if ($count > 0 && !isset($errors[$conv])) {
$errors[$conv] = true;
spip_log("DATE_FORMAT : At least one parameter can't be parsed by strftime with format '$conv'", 'sqlite.' . _LOG_INFO_IMPORTANTE);
}
$conv = str_replace(array_keys($mysql_to_php), $mysql_to_php, $conv);
return strftime($conv, is_int($date) ? $date : strtotime($date));
}
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter