Mam następujący kod, którego chcę odzyskać daty od DB. Kod wyjściowy wyświetla listę zapasową, ale w innym formacie daty.

$array = $stmt->fetchAll(PDO::FETCH_COLUMN);
$dates = implode("\n",$array);
return $dates;

Wynik to:

2021-05-26
2021-05-27
2021-05-28
2021-05-29
2021-05-30

Potrzebuję tego formatu: m / d / y

Próbowałem tego:

`$array = $stmt->fetchAll(PDO::FETCH_COLUMN);

$ daty = implode ("n", $ tablica); $ Newdate = data ("m / d / y", strtotime ($ daty)); zwrot $ Newdate; `

Ale wynik jest tylko jednym wynikiem i złym:

01/01/70.

Format zmienił, ale straciłem poprawne daty

Z góry dziękuję.

-1
Fabrizio 8 czerwiec 2021, 16:02

3 odpowiedzi

Najlepsza odpowiedź

Użyj funkcji MySQL DATE_FORMAT w wybranym i nie musisz go sformatować.

SELECT DATE_FORMAT('2021-05-26','%m/%d/%Y')
| DATE_FORMAT('2021-05-26','%m/%d/%Y') |
| :----------------------------------- |
| 05/26/2021                           |

db & lt; & gt; Fiddle Oto

W swoim zapytaniu używasz go jak reklamowane i zastąpienie daty z kolumną

SELECT  DATE_FORMAT(`date`,'%m/%d/%Y') FROM reservations WHERE object_id IN (select id from rooms WHERE sub_id='$value')

Twój kod jest wrażliwy wrażliwy> do wtrysku SQL Tak więc użyj przygotowanych instrukcji z parametrami patrz Jak mogę zapobiec wstrzyknięciu SQL w PHP?

0
nbk 8 czerwiec 2021, 13:55

Możesz użyć array_map, aby zastosować zwrotny do wszystkich elementów tablicy. Dzięki funkcji Strototime i data można zmienić format dat. Dokumentacja na php.net

$array = $stmt->fetchAll(PDO::FETCH_COLUMN);
$dates = array_map(function($element) {
    return date("Ymd", $element);
}, $dates);
$dates = implode("\n",$array);
return $dates;
0
D B 8 czerwiec 2021, 13:06

Najprostszym sposobem jest włączenie ich do obiektów DateTime, a następnie użyj formatu, aby uzyskać wynik? Więc coś takiego:

$date = "2021-05-26";

$DT = DateTime::createFromFormat("Y-m-d", $date);
echo $DT -> format("m/d/Y");

Ta metoda zapewnia również możliwość wykonywania innych konwersji i / lub modyfikacji czasu itp.

DATETIME Utwórz od formatu Docs

Doksy formatu DATETIME.

0
Jamie Robinson 8 czerwiec 2021, 13:11