![]() |
![]() ![]() |
![]() |
![]()
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: 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 |
|
|
![]()
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 -------------------- |
|
|
![]()
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).
|
|
|
![]()
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.. |
|
|
![]()
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.
-------------------- |
|
|
![]()
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:
EDIT: W sumie o tym samym pisał phpion, tylko użył funkcji CAST. Ten post edytował mortus 31.08.2010, 12:17:08 |
|
|
![]()
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 ![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 898 Pomógł: 80 Dołączył: 31.05.2008 Ostrzeżenie: (20%) ![]() ![]() |
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 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 26.06.2025 - 06:54 |