2013-08-06 13 views
20

Próbowałem wstawić datę i czas ciąg sformatowany w dziedzinie mysql timestamp za pomocą następujących dwóch metod, ale zarówno pokazuje mi 0000-00-00 00:00:00Jak wstawić niestandardową datę do pola datownika mysql?

INSERT INTO test VALUES (UNIX_TIMESTAMP('2013-08-05 18:19:03')) 
INSERT INTO test VALUES (UNIX_TIMESTAMP(STR_TO_DATE('2013-08-05 18:19:03', '%Y-%m-%d %H:%i:%s'))) 

wierzę Pierwsza z nich powinna działać jak ja Spodziewam się, ale nie wiem, dlaczego nie jest parsowanie daty i czasu?

+0

Nie ma nic złego w używaniu 'UNIX_TIMESTAMP', co można zobaczyć, wykonując' SELECT 'under mysql. Czy Twój stół ma więcej niż jedną kolumnę? A może typ danych dla kolumny jest czymś innym niż int (ponieważ właśnie to zwraca "UNIX_TIMESTAMP")? – GreatBigBore

+0

Spróbuj wprowadzić swoje instrukcje 'INSERT' do mysql i zobacz, jak reaguje. – GreatBigBore

+0

@GreatBigBore Moje pole to znacznik czasu, nie jest to kolumna z datą i godziną i jest tylko jedna kolumna – Maximus

Odpowiedz

24

Problem polega na tym, że twoje pole jest zdefiniowane jako TIMESTAMP, ale UNIX_TIMESTAMP zwraca int. Zamiast tego użyj INSERT INTO test VALUES ('2013-08-05 18:19:03').

+0

To działało! Dzięki. Zastanawiam się, dlaczego funkcje strtotime php działają dobrze, ale nie UNIX_TIMESTAMP w zapytaniu mysql? Kiedy przekazuję wartość unix_timestamp w funkcji daty, pokazuje mi ona 43 lata wstecz. – Maximus

+0

Jest tak prawdopodobnie dlatego, że funkcje PHP, których używasz, oczekują czegoś innego niż int zwracanego przez 'UNIX_TIMESTAMP'. Sprawdź dokładnie dokumentację i prawdopodobnie znajdziesz problem. – GreatBigBore

Powiązane problemy