Piszę zapytanie w php za pomocą ciągu wysłanego z aplikacji java na Androida.
Zapytanie wygląda mniej więcej tak:

$insertSQL = sprintf("INSERT INTO app_DuckTag (taste) VALUES (%s) WHERE species=%s AND timestamp=%s",
                         GetSQLValueString($_POST['taste'], "text"),
                         GetSQLValueString($_POST['species'], "text"),
                         GetSQLValueString($_POST['timestamp'], "text"));

Ale wątpię, aby znacznik czasu był przechowywany jako ciąg znaków w MySQL.
Jak przekonwertować ciąg do formatu czasu, jak w MySQL?
Funkcja php strtotime(string) konwertuje go na czas uniksowy.
Ale MySQL przechowuje to inaczej, jak sądzę. Dziękuję Ci.

EDYCJA: Tak to wygląda w MySQL phpmyadmin: 2011-08-16 17:10:45

EDYCJA: Moje zapytanie jest jednak błędne. Cannon używa klauzuli WHERE z opcją Wstaw do.
Zapytanie musi być UPDATE .... SET ... = ... WHERE ....
Ale przyjęta odpowiedź jest poprawnym sposobem użycia czasu w klauzuli WHERE.

16
Brahadeesh 18 sierpień 2011, 23:27
Jak odbierasz to z aplikacji na Androida?
 – 
Jeff Lambert
18 sierpień 2011, 23:35
$_POST['timestamp'] = "2011-08-16 17:10:45". Mam nadzieję że to pomoże. Jeśli nie, zapytaj mnie, a ja to opublikuję.
 – 
Brahadeesh
18 sierpień 2011, 23:37

3 odpowiedzi

Najlepsza odpowiedź

To powinno być wszystko:

date("Y-m-d H:i:s", strtotime($_POST['timestamp']));

Jeśli chcesz sprawdzić strefy czasowe i takie, powinieneś użyć strftime zamiast daty

32
Michael Berkowski 27 wrzesień 2011, 23:38

Jeśli możesz uzyskać wejściowy „ciąg” (w którym nie podałeś formatu, w którym go otrzymujesz) do wartości znacznika czasu uniksowego, możesz łatwo przekonwertować go na format daty i godziny MySQL w następujący sposób:

$mysqldatetime = date("Y-m-d H:i:s", $unixTimeStampValue);

Spowoduje to utworzenie ciągu podobnego do następującego:

2011-08-18 16:31:32

Jest to format formatu datagodzina MySQL. Jeśli używasz innego formatu czasu, pierwszy argument funkcji date będzie inny.

Zobacz podręcznik funkcji data, aby uzyskać więcej informacji i inne sposoby formatowania wartość, którą zwraca.

Edytuj

Otrzymujesz ciąg znaków sformatowany w formacie daty i godziny MySQL. Po oczyszczeniu można go wstawić bezpośrednio do bazy danych. Dla MySQL może to być typ danych 'datetime', ale dla PHP jest to po prostu ciąg znaków (tak jak całe zapytanie SQL jest niczym więcej niż ciągiem znaków dla PHP).

$timestamp = mysql_real_escape_string($_POST['timestamp']);

Powinieneś być w stanie bezpiecznie wstawić to do swojej bazy danych dla pola sygnatury czasowej.

3
Jeff Lambert 18 sierpień 2011, 23:45
Otrzymuję go dokładnie w ten sam sposób, ale jako ciąg - "2011-08-16 17:10:45"
 – 
Brahadeesh
18 sierpień 2011, 23:33
Sprawdzę i dam znać. Myślę, że jeśli mogę wstawić go do pola znacznika czasu, to muszę być w stanie sprawdzić, czy jest to samo w klauzuli WHERE.
 – 
Brahadeesh
18 sierpień 2011, 23:54