Chcę przekonwertować timestamp
w MySQL na datę.
Chciałbym sformatować pole user.registration w pliku tekstowym jako yyyy-mm-dd
.
Oto mój SQL:
$sql = requestSQL("SELECT user.email,
info.name,
FROM_UNIXTIME(user.registration),
info.news
FROM user, info
WHERE user.id = info.id ", "export members");
Próbowałem także konwersji daty z:
DATE_FORMAT(user.registration, '%d/%m/%Y')
DATE(user.registration)
Powtarzam wynik przed zapisaniem pliku tekstowego i otrzymuję:
email1; name1; DATE_FORMAT (rejestracja użytkownika, '% d /% m /% Y'); aktualności1
email2; name2; news2
Jak mogę przekonwertować to pole do tej pory?
mysql
sql
date-formatting
remyremy
źródło
źródło
Odpowiedzi:
źródło
users
.user_created_at
), „% Y-% b-% e”) = „2015-03-06” to poprawny format, czy powinienem go zmodyfikować?'%Y-%m-%d'
, co sformatujesz w PHP(date('Y-m-d',$row->user_created_at))
- to (oba warianty, SQL i PHP) pokazuje się jako 2018-11-06Konwertuj znacznik czasu na datę w MYSQL
Stwórz tabelę z całkowitym znacznikiem czasu:
Wstaw niektóre wartości
Spójrz
Konwertuj liczbę na znacznik czasu:
Konwertuj go na czytelny format:
źródło
Aby dostać datę, możesz
cast
to zrobići uzyskać określony format
date_format
Demo SQLFiddle
źródło
Jeśli
registration
pole jest rzeczywiście typuTIMESTAMP
, powinieneś być w stanie zrobić:a rejestracja powinna być wyświetlana jako rrrr-mm-dd
źródło
Wystarczy użyć funkcji DATE mysql:
źródło
SELECT DATE(UNIX_TIMESTAMP())
plujeNULL
w moim MySQL 5.7.14Powinieneś przekonwertować
timestamp
nadate
.FROM_UNIXTIME
źródło
Jeśli otrzymujesz zapytanie w danych wyjściowych, musisz pokazać nam kod, który faktycznie odzwierciedla wynik. Czy umiesz opublikować kod wywołujący requeteSQL?
Na przykład, jeśli użyłeś pojedynczych cudzysłowów w php, to wypisze nazwę zmiennej, a nie wartość
Brzmi dokładnie jak twój problem i jestem przekonany, że to jest przyczyna.
Spróbuj także usunąć symbol @, aby sprawdzić, czy to pomoże, zwiększając ilość informacji.
po to aby
staje się
Spowoduje to zatrzymanie pomijania błędów, jeśli zapytanie zgłosi błąd.
źródło
Zrobiłem to z funkcją „data”, jak opisano tutaj :
źródło
FROM_UNIXTIME(unix_timestamp, [format])
to wszystko czego potrzebujeszFROM_UNIXTIME
pobiera wartość liczbową i przekształca ją wDATE
obiektlub jeśli otrzyma ciąg formatu, zwraca go jako ciąg.
Starszym rozwiązaniem było pobranie początkowego obiektu daty i sformatowanie go za pomocą drugiej funkcji
DATE_FORMAT
... ale nie jest to już konieczneźródło
Próbować:
Sformatuje znacznik czasu w milisekundach do ciągu rrrr-mm-dd.
źródło