31,029
edits
| Line 235: | Line 235: | ||
Voir aussi le chapitre "Les nombres réels, montants et calculs" plus bas. | Voir aussi le chapitre "Les nombres réels, montants et calculs" plus bas. | ||
* Les fonctions NOW ou | * Les fonctions NOW, SYSDATE ou DATEDIFF sont interdites au sein des ordres SQL. S'il faut saisir la date du moment dans un champ, la valeur doit venir du PHP, par exemple par la fonction dol_now(), et non du moteur de base de données. Ceci afin d'avoir une meilleure portabilité du code mais surtout d'avoir une gestion correcte des TimeZone et ne pas dépendre du TimeZone de la base de donnée. | ||
Par exemple, on ne fera pas: | |||
<source lang="php"> | |||
$sql="SELECT rowid FROM table where datefield = NOW()"; | |||
</source> | |||
mais: | |||
<source lang="php"> | |||
$sql="SELECT rowid FROM table where datefield = '".$this->db->idate(dol_now())."'"; | |||
</source> | |||
Par exemple, on ne fera pas: | |||
<source lang="php"> | |||
$sql="SELECT rowid FROM table where DATEDIFF(table.datefield, NOW()) > 7"; | |||
</source> | |||
mais: | |||
<source lang="php"> | |||
$sql="SELECT rowid FROM table where datefield < '".$this->db->idate(dol_now() - (7 * 24 * 3600))."'"; | |||
</source> | |||
== Règles de migration de base == | == Règles de migration de base == | ||