Cum să: Inserare Înregistrare cu Dată folosind wpdb
Dezvolt un plugin unde trebuie să pre-încarc date în tabelele personalizate pe care le creez la Activare. Inserările mele au funcționat bine până acum, până când am încercat să inserez o înregistrare cu un tip de date DATE. Poate cineva să-mi spună ce am greșit aici?
Definiția Tabelei din Baza de Date:
$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);
Inserarea în Baza de Date:
$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);
Am încercat multe metode diferite, cum ar fi folosirea simplă => '2012-08-14', dar nici asta nu funcționează. Sunt sigur că există o sintaxă pe care fie o omit, fie o am greșită.

Poți folosi pur și simplu funcția current_time
. De exemplu:
<?php $time = current_time( 'mysql' ); ?>
Funcția va returna un șir de caractere cu data și ora în formatul cerut de MySQL.
Poți afla mai multe detalii aici. Și dacă ești interesat de „problemele de programare legate de fusurile orare”, ai putea citi acest articol Gestionarea timpului și datelor în WordPress.

date
nu acceptă un șir de caractere lizibil pentru om. Aceasta necesită un timestamp Unix. Trebuie să convertiți acea dată lizibilă într-un timestamp folosind strtotime
.
'begin_date' => date('Y-m-d', strtotime('2012-08-14')),
Desigur, nu este nevoie să convertiți o dată în format AN-LUNA-ZI într-un timestamp doar pentru a o converti înapoi în același format AN-LUNA-ZI.

Există o greșeală de tipar în codul tău. Ai creat end_date
dar inserezi date în end-date
. O marchez pentru închidere ca 'too localized' dar ai putea pur și simplu să o ștergi.

se pare că nu am suficiente credențiale pentru a o șterge, așa că poți să o închizi.

Răspunsul acceptat nu este corect. Poți să transmiți formate de date ca șiruri de caractere către baza de date, atâta timp cât acestea sunt formatate într-un mod în care baza de date le poate înțelege (de exemplu 2022-01-15T20:34:34
sau 2022-01-15 20:34:34
). Poți găsi specificațiile MariaDB aici, sunt sigur că sunt aceleași ca și pentru MySQL.
