Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]zaokrąglenie timestamp i wyszukiwanie w bazie
szybki
post
Post #1





Grupa: Zarejestrowani
Postów: 85
Pomógł: 0
Dołączył: 18.06.2014

Ostrzeżenie: (0%)
-----


Huh jakiś geniusz w bazie zapisał date jako timestamp, niestety nie wiem jak ją mam wyszukać skoro jest niepoprawna.

  1. echo 'data w bazie 1463695200';
  2. echo 'data zwrócona przez DataTime w php 1463616000';


Jak widać wyniki są nieco różne, jak moge je wyszuka w mysql? Czy jakoś to zaokrąglić?

Obie zwracają dobrze aktualny dzień.

Ten post edytował szybki 2.10.2015, 10:18:54
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
jakis geniusz w bazie zapisał date jako timestamp

Huh, a inny geniusz nie wie, ze timestamp jest jak najbardziej poprawnym zapisem daty w bazie (IMG:style_emoticons/default/wink.gif)

A do czego chcesz zaokrąglac? Jak szukasz dat na poziomie dni, to zaokraglaj do dni. w manualu myslq w dziale "times functions" masz wszystko czego potrzebujesz
Go to the top of the page
+Quote Post
redeemer
post
Post #3





Grupa: Zarejestrowani
Postów: 915
Pomógł: 210
Dołączył: 8.09.2009
Skąd: Tomaszów Lubelski/Wrocław

Ostrzeżenie: (0%)
-----


https://dev.mysql.com/doc/refman/5.5/en/dat...-functions.html
Go to the top of the page
+Quote Post
Rysh
post
Post #4





Grupa: Zarejestrowani
Postów: 821
Pomógł: 111
Dołączył: 11.09.2006
Skąd: Biała Podlaska

Ostrzeżenie: (0%)
-----


Przecież możesz użyć from_unixtime() i TIMESTAMP()
Go to the top of the page
+Quote Post
szybki
post
Post #5





Grupa: Zarejestrowani
Postów: 85
Pomógł: 0
Dołączył: 18.06.2014

Ostrzeżenie: (0%)
-----


  1. WHERE start_date = UNIX_TIMESTAMP("2007-12-04")


Jednak nadal data nie jest wyszukana
Go to the top of the page
+Quote Post
Pyton_000
post
Post #6





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


(IMG:style_emoticons/default/facepalmxd.gif) A zajrzałeś do manuala co ta funkcja robi? Bo chyba nie koniecznie
Go to the top of the page
+Quote Post
szybki
post
Post #7





Grupa: Zarejestrowani
Postów: 85
Pomógł: 0
Dołączył: 18.06.2014

Ostrzeżenie: (0%)
-----


Tak, jednak nie za bardzo wiem jak w sql wyszukać datę jeśli w formularzu wpiszę 2015-01-01, a co jeśli w sql zapisany jeest timestamp z godziną? To jak to przekonwertować?

  1. AND start_date >= unix_timestamp("2007-12-05") AND start_date < unix_timestamp("2007-12-05")


Nie wyszukuje daty, pomimo że takowa istnieje. Jeśli dam

  1. AND start_date = unix_timestamp("2007-12-05")


Również.

Ten post edytował szybki 5.10.2015, 08:21:31
Go to the top of the page
+Quote Post
Daimos
post
Post #8





Grupa: Zarejestrowani
Postów: 1 319
Pomógł: 118
Dołączył: 26.11.2003
Skąd: Lublin

Ostrzeżenie: (0%)
-----


oszalałeś, zapoznaj się z formatami daty, timestamp to data, możesz np. robić tak:
  1. AND DATE(start_date) >= "2007-12-05" AND DATE(start_date) < "2007-12-05"

i zakładam, że start date to timestamp. Oczywiście tutaj możesz użyć też between i dostawić godziny, jeśli masz indeks, to będzie szybciej:

  1. WHERE start_date BETWEEN '2007-12-05 00:00:00' AND '2007-12-05 23:59:59'


Cytat
Huh jakiś geniusz w bazie zapisał date jako timestamp, niestety nie wiem jak ją mam wyszukać skoro jest niepoprawna.


"Geniusz", to zapisuje daty w formie inta. A później nic nie można z tym zrobić. Zajrzyj do manuala mysql od czasu do czasu

Ten post edytował Daimos 5.10.2015, 10:35:27
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 17.09.2025 - 13:19