Excel Forum - Porady, Pomoc,  Excel Help, Excel FAQ Strona Główna
 FAQ  RegulaminRegulamin  Szukaj   Użytkownicy   Grupy   Rejestracja   Profil   Twoje wiadomości   Zaloguj 


Poprzedni temat «» Następny temat
ID tematu: 63530 Skopiuj do schowka funkcja date() w zapytaniu sql
Autor Wiadomość
malya 
Fan Excela


Posty: 89
Wysłany: 17-12-2018, 15:16   funkcja date() w zapytaniu sql

Witam,

Wysyłam zapytanie do bazy gdzie muszę pobrać dane z dzisiejszego dnia, ale samo date() nie działa bo prawdopodobnie pole zawiera oprócz daty jeszcze godzinę.

czyli zapytanie w formacie
Kod:
INCIDENT_PDV.IPDV_DATE_TRAIT={ts '2018-12-17 00:00:00'}
działa

ale w formacie
Kod:
INCIDENT_PDV.IPDV_DATE_TRAIT=date()
nie działa

jak można temu zaradzić.
ID posta: 358593 Skopiuj do schowka
 
 
Artik 



Wersja: Win Office 365
Pomógł: 2652 razy
Posty: 8794
Wysłany: 17-12-2018, 16:58   

W tym wątku przewija się temat formatowania daty w zapytaniu.

Artik
_________________
Persistence is a virtue in the world of programming.
ID posta: 358596 Skopiuj do schowka
 
 
ąćęłńóś
Excel Expert


Pomógł: 202 razy
Posty: 960
Wysłany: 17-12-2018, 18:03   

Swoją drogą, to nie ma już funkcji 'Format' oraz 'Cast/Convert' żeby się nimi pobawić ... :roll: ?

Select GetDate()
...
Select Convert(varchar, GetDate(), 105);
...
Select Convert(char(10), GetDate(), 120);
...
Select Replace(Convert(varchar, GetDate(), 106), ' ', '-')
...
Select FORMAT(GETDATE(),'dd/MMM/yyyy', 'en-us')
...
itd.
ID posta: 358600 Skopiuj do schowka
 
 
andie 
Exceloholic


Pomógł: 56 razy
Posty: 191
Wysłany: 17-12-2018, 18:39   

ąćęłńóś napisał/a:
Swoją drogą, to nie ma już funkcji 'Format' oraz 'Cast/Convert'

No i jeszcze, przede wszystkim, wypadałoby wiedzieć z jaką bazą (dialektem sql) mamy do czynienia, bo nie wszędzie będą działać funkcje Cast czy GetDate() ;-)
ID posta: 358603 Skopiuj do schowka
 
 
malya 
Fan Excela


Posty: 89
Wysłany: 18-12-2018, 11:42   

Cytat:
jaką bazą (dialektem sql) mamy do czynienia,


jak mogę to sprawdzić?
ID posta: 358659 Skopiuj do schowka
 
 
ąćęłńóś
Excel Expert


Pomógł: 202 razy
Posty: 960
Wysłany: 18-12-2018, 11:53   

Pytasz pod kątem "GetDate()" ?
Sprawdż czy select "z tym" zadziała .. :-> .. jak nie to "może masz MySQL" .. wtedy SysDate() .. albo może "nawet" Now() .. (?)
A najlepiej spytaj swojego informatyka ... no kto jak kto, ale "on" powinien to wiedzieć ... :->
ID posta: 358660 Skopiuj do schowka
 
 
andie 
Exceloholic


Pomógł: 56 razy
Posty: 191
Wysłany: 18-12-2018, 14:58   

malya napisał/a:
jak mogę to sprawdzić?

nie mam pojęcia...
To Ty powinieneś wiedzieć, z jaką bazą się łączysz (albo jaką odpytujesz) ;-)
ID posta: 358669 Skopiuj do schowka
 
 
malya 
Fan Excela


Posty: 89
Wysłany: 19-12-2018, 09:28   

ąćęłńóś napisał/a:

A najlepiej spytaj swojego informatyka ... no kto jak kto, ale "on" powinien to wiedzieć ... :->


bazy są Oraclowe, nie wiem czy to coś pomoże i niestety nadal nie potrafię tego ogarnąć,

całe zapytanie wygląda jak poniżej

Kod:
CommandText = Array( _
        "SELECT INCIDENT_PDV.IPDV_DATE_TRAIT, INCIDENT_PDV.IPDV_C_ITM8, INCIDENT_PDV.IPDV_C_CLI, INCIDENT_PDV.IPDV_NB_COLIS_DEM, INCIDENT_PDV.IPDV_NB_COLIS_SERV" & Chr(13) & "" & Chr(10) & "FROM S354LOGI.INCI" _
        , _
        "DENT_PDV INCIDENT_PDV" & Chr(13) & "" & Chr(10) & "WHERE INCIDENT_PDV.IPDV_DATE_TRAIT={ts '2018-12-18 00:00:00'} AND INCIDENT_PDV.IPDV_C_ITM8 in (" & KODY & ")")


na grafice w załączniku zaznaczyłem, fragment kodu, który działa. Inne zapisy jak
Kod:
date()

czy
Kod:
sysdate()


nie chcą działać i konieczna jest codzienna zmiana kodu ręcznie.

Wiecie jak temu zaradzić.

date.jpg
Plik ściągnięto 8 raz(y) 28.18 KB

ID posta: 358714 Skopiuj do schowka
 
 
Tajan


Pomógł: 4363 razy
Posty: 9692
Wysłany: 19-12-2018, 10:54   

Skoro jest to tekst zapytania, to wystarczy zastosować zwykłe funkcje tekstowe do utworzenia literału timestamp, bez potrzeby zagłębiania się w SQL:
Kod:
"DENT_PDV INCIDENT_PDV" & Chr(13) & "" & Chr(10) & "WHERE INCIDENT_PDV.IPDV_DATE_TRAIT={ts '" & Format(Date, "yyyy-mm-dd") & " 00:00:00'} AND INCIDENT_PDV.IPDV_C_ITM8 in (" & KODY & ")")
ID posta: 358720 Skopiuj do schowka
 
 
malya 
Fan Excela


Posty: 89
Wysłany: 19-12-2018, 11:32   

Tajan, działa,

samą składnie (cudzysłów z &) rozumiem, ale czy te klamry mają jakieś znaczenie? Pierwszy raz się z nimi spotykam.
ID posta: 358725 Skopiuj do schowka
 
 
Tajan


Pomógł: 4363 razy
Posty: 9692
Wysłany: 19-12-2018, 11:52   

Nawiasy klamrowe i znaki "ts" wraz z wartością pomiędzy nimi tworzą tzw. literał języka SQL. Inaczej mówiąc jest to wartość wstawiona przez programistę z określeniem typu jaki ma być użyty przy wykonaniu zapytania. W tym przypadku jest to time stamp (stąd litery "ts") czyli stempel czasowy. Dzięki temu podczas wykonywania zapytania program "rozumie", że to co jest w nawiasach klamrowych jest datą połączoną z czasem.
ID posta: 358727 Skopiuj do schowka
 
 
malya 
Fan Excela


Posty: 89
Wysłany: 19-12-2018, 12:03   

dziękuje
ID posta: 358729 Skopiuj do schowka
 
 
ąćęłńóś
Excel Expert


Pomógł: 202 razy
Posty: 960
Wysłany: 19-12-2018, 12:12   

malya napisał/a:
... bazy są Oraclowe ... sysdate() ... nie chcą działać ...

:?:
Czy to 'coś' w bazie to na pewno data ?
ID posta: 358731 Skopiuj do schowka
 
 
malya 
Fan Excela


Posty: 89
Wysłany: 19-12-2018, 12:27   

access to pole widzi jako data i kryteria zapisane jako dete() zwracają poprawny wynik, ekran w załączniku.

Natomiast dane zwracane z query w polu mają zawartą datę i godzinę z tym, że godzina jest 00:00:00

access_data.jpg
Plik ściągnięto 12 raz(y) 20.85 KB

ID posta: 358734 Skopiuj do schowka
 
 
ąćęłńóś
Excel Expert


Pomógł: 202 razy
Posty: 960
Wysłany: 19-12-2018, 13:22   

Jeśli by np. pole "IPDV_C_ITM8" było czasem (?, co może sugerować końcówka nazwy, choć nie musi), a w "IPDV_DATE_TRAIT" jest tylko data, ale w formacie z nieistniejącym czasem, to ktoś sobie zadał wiele trudu, żeby sobie skomplikować życie ... powinno być raczej: data oddzielnie i czas oddzielnie ... a tak męcz się człowieku ... :->
ID posta: 358742 Skopiuj do schowka
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Theme xandgreen created by spleen& Programosy modified v0.3 by warna
Opieka techniczna www.marketingNET.pl

Archiwum

Strona używa plików cookies.

Kliknij tutaj, żeby dowiedzieć się jaki jest cel używania cookies oraz jak zmienić ustawienia cookie w przeglądarce.
Korzystając ze strony użytkownik wyraża zgodę na używanie plików cookies, zgodnie z bieżącymi ustawieniami przeglądarki.
Sprawdź, w jaki sposób przetwarzamy dane osobowe