function _sqlite_func_year($d) { return date("Y", _sqlite_func_unix_timestamp($d)); }
/** * version optimisee et memoizee de date() utilisee par * _sqlite_func_year, _sqlite_func_month, _sqlite_func_dayofmonth * * @param string $quoi * format : Y, m, ou d * @param int $d * timestamp * @return int */ function _sqlite_func_date($quoi, $d) { static $mem = array(); static $n = 0; if (isset($mem[$d])) { return $mem[$d][$quoi]; } if ($n++ > 100) { $mem = array(); $n = 0; } $dec = date("Y-m-d", _sqlite_func_unix_timestamp($d)); $mem[$d] = array("Y" => substr($dec, 0, 4), "m" => substr($dec, 5, 2), "d" => substr($dec, 8, 2)); return $mem[$d][$quoi]; }
/** * Nombre de jour entre 0000-00-00 et $d * http://doc.spip.org/@_sqlite_func_to_days * cf http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_to-days * @param string $d * @return int */ function _sqlite_func_to_days ($d) { $offset = 719528; // nb de jour entre 0000-00-00 et timestamp 0=1970-01-01 $result = $offset+(int)ceil(_sqlite_func_unix_timestamp($d)/(24*3600)); #spip_log("Passage avec TO_DAYS : $d, $result",'debug'); return $result; }