[już sobie częściowo poradziłem, rozwiązanie poniżej]
Cześć mam zbudowany widok(V_LOG) - bez żadnych warunków where. Prosty select z kilkoma joinami. Przy czym joiny nie są związane z datami w żaden sposób
I problem chyba z datami.
Otóż chcę sobie pobrać pewne dane z tego widoku, posługując się zapytaniem:
SELECT * FROM V_LOG
WHERE nDate='2007-02-01' and UID=1001
Pokazuje mi się tylko jeden rekord, zamiast dwóch(w programie pisanym w Delphi za pomocą ADO) i żaden(!!), gdy zapytanie jest wykonane bezpośrednio na serwerze.
Jeśli pozbędę się warunku z nDate to wtedy jest ok.
Pole nDate rekordu pokazywanego w programie wygląda tak:
nDate = 2007-02-01 0000.000
Pole nDate rekordu nie pokazywanego wygląda tak:
nDate = 2007-02-01 1326.000
Próbowałem w warunku nDate opatrzeć własną funkcją, która pobiera datetime, a zwraca samą datę(bez czasu) jako varchar, ale też nie działało.
Gdzie może leżeć problem?
[dopisane rozwiązanie]
Okazało się, że serwer nieco inaczej widzi daty. Tzn nie: 'RRRR-MM-DD', tylko 'RRRR-DD-MM'
Imho ADO to tłumaczyło, natomiast wykonywanie tego zapytania na serwerze nie pokazało rekordów, ponieważ serwer widocznie myślał, że ja chcę zobaczyć z 2 stycznia, a nie 1 lutego.
Dodatkowo musiałem zmodyfikować warunek tak:
[dbo].get_date(nDate)=[dbo].get_date('2007-01-02')
. Funkcja get_date zwraca samą datę z wartości datetime jako varchar