J'écris un plugin où je dois pré-charger des données dans les tables personnalisées que je crée lors de l'activation. Mes inserts ont fonctionné correctement jusqu'à ce que je tente d'insérer un enregistrement avec un type de données DATE. Quelqu'un peut-il s'il vous plaît dites-moi ce que j'ai mal ici?
Base de données Définition:
$sql = "CREATE TABLE IF NOT EXISTS " . $wpdb->prefix.SSM_ACADEMIC_YEAR_TABLE. " (
id mediumint(12) NOT NULL AUTO_INCREMENT,
academicyear VARCHAR(200) NOT NULL,
begin_date date NOT NULL,
end_date date NOT NULL,
created_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id));";
$wpdb->query($sql);
Insertion de base de données:
$current_year = array(
'academicyear' => '2012 - 2013',
'begin_date' => date('Y-m-d', '2012-08-14'),
'end-date' => date('Y-m-d', '2013-05-31')
);
$wpdb->insert($wpdb->prefix.SSM_ACADEMIC_YEAR_TABLE, $current_year);
J'ai essayé de nombreuses méthodes différentes, comme utiliser simplement => '2012-08-14', mais cela ne fonctionne pas non plus. Je suis sûr qu'il me manque une syntaxe ou une erreur de syntaxe.
date
ne prend pas une chaîne lisible par l'homme. Il faut un timestamp Unix . Vous devez convertir cette date humaine en horodatage avec strtotime
.
'begin_date' => date('Y-m-d', strtotime('2012-08-14')),
Bien entendu, il n'est vraiment pas nécessaire de convertir une date ANNÉE-MOIS-JOUR en un horodatage uniquement pour la reconvertir au format ANNÉE-MOIS-JOUR.
Vous pouvez simplement utiliser la fonction current_time
. Par exemple:
<?php $time = current_time( 'mysql' ); ?>
La fonction retournera la chaîne date-heure requise par mysql.
Vous pouvez trouver plus de détails ici . Et si vous êtes intéressé par les "problèmes de programmation de fuseaux horaires", vous voudriez lire cet articleGestion des heures et des dates dans WordPress.