Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> uzycie like na polu typu timestamp
misty
post 31.08.2010, 08:18:45
Post #1





Grupa: Zarejestrowani
Postów: 366
Pomógł: 0
Dołączył: 2.01.2007

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


hej, chce moc wyciagac z bazy dane wg daty. moge miec na wejsciu date z czasem, tj np '2010-08-31 10:00:02' lub tylko date, tj '2010-08-31'. pomyslalam ze moze wykorzystam do tego 'like'.
jednak jak probuje polaczyc 'like' z polem typu timestamp to nie wychodzi. Pisze takie polecenie:

  1. SELECT id FROM test WHERE date_start LIKE '2010-08-31%'
i otrzymuje komunikat:
HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts

nie bardzo to rozumiem. czy ja moge zatem do timestamp uzyc 'like' tak jak chcialam? a moze macie jakis inny pomysl na moj problem?

pozdrawiam,
misty
Go to the top of the page
+Quote Post
wookieb
post 31.08.2010, 08:50:50
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




bo na timestamp-ie nie używa się like

Użyj between


--------------------
Go to the top of the page
+Quote Post
phpion
post 31.08.2010, 09:39:15
Post #3





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Albo zrzutuj pole na stringa za pomocą CAST. Aczkolwiek BETWEEN będzie lepszym wyjściem (chociażby z racji możliwości użycia indeksu).
Go to the top of the page
+Quote Post
misty
post 31.08.2010, 10:58:39
Post #4





Grupa: Zarejestrowani
Postów: 366
Pomógł: 0
Dołączył: 2.01.2007

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


ale ja bym chciala zeby to troszke inaczej dzialalo. bo w between musze podac zakres od - do. a ja chce miec tak:

- mam metode w javie ktore wykonuje to zapytanie. na wejsciu dostaje ona date. albo z czasem albo bez. czyli albo '2010-08-31' albo '2010-08-31 12:45:12'

chce miec takie zapytanie (tutaj czysty sql) zebym mogla podac i pierwszy wariant i drugi. w pierwszym-chce zeby mi znalezlo wszystkie rekordy ktore maja w sobie date '2010-08-31' (niewazne jaka godzina). a w drugim juz z konkretna godzina. jakbym miala mozliwosc uzycia czegos w stylu like, bo uniknelabym pisania warunkow:

select id from test where call_end like '2010-08-31%'
selet id from test where call_end like '2010-08-31 12:45:12'%'

czyli mialabym 1 zapytanie odporne na to, w jakim formacie podam date..
Go to the top of the page
+Quote Post
wookieb
post 31.08.2010, 11:11:21
Post #5





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Powtarzam. Na polu typu timestamp nie używa się LIKE i nawet o tym nie myśl. Przeparsuj datę po stronie php i ułóż odpowiednie zapytanie.


--------------------
Go to the top of the page
+Quote Post
mortus
post 31.08.2010, 12:14:53
Post #6





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


Wystarczy użyć funkcji DATE_FORMAT ponieważ zamienia ona datę (również w formacie TIMESTAMP) na łańcuch znaków, który jak najbardziej można porównywać za pomocą LIKE. Odpowiednie zapytanie:
  1. SELECT id FROM test WHERE DATE_FORMAT(call_end, '%Y-%m-%d %H:%i:%s') LIKE '2010-08-31%'


EDIT:
W sumie o tym samym pisał phpion, tylko użył funkcji CAST.

Ten post edytował mortus 31.08.2010, 12:17:08
Go to the top of the page
+Quote Post
nospor
post 31.08.2010, 12:19:32
Post #7





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




@mortus albo wychodzisz z założenia: "jak chce to niech ma, jej sprawa"
albo specjalnie z brutalną świadomością utwierdzasz ją w słuszności swoich złych pomysłów
smile.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
cojack
post 31.08.2010, 15:05:28
Post #8





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

Ostrzeżenie: (20%)
X----


DATE_FORMAT - nie ma takiej funkcji w postgresql.


--------------------
cojack blog - mój blog (na jakiś czas off).
"jak czegoś nie wiem, to nie myślę że wiem" - moja domena
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 26.06.2025 - 06:54