Pole daty/czasu i kwerendy

Wstęp

Ostatnio walczyłem z polem daty w tabeli. Jako, ze najczęściej wykorzystuje SQL Server jako back-end, trochę mnie to stresów kosztowało…
Postanowiłem się zatem podzielić kilkoma wskazówkami.
Oczywiste jest to, że baza (a konkretnie tabela) nie trzyma w tabeli wartości w postaci daty, tylko jako liczbę, problem polega na tym, że czasami chcemy dodać za pomocą zapytań jakiś rekord lub wyszukać w warunku where po dacie.

Wskazówki

Pytając o datę umieśćmy ją w hash’ach np tak: #7/26/2012#. I nie, nie pomyliłem się w formacie daty dokładnie ma być miesiac/dzień/rok i koniecznie rozdzielany slash-em.
Format to cos co kosztowało mnie dużo nerwów w systemie w opcjach regionalnych jest data krótka w formacie rrrr-MM-dd i stąd niby czerpie Access swoją wiedzę o formacie daty. Jednak w bebechach już tak nie jest, bo zmienia ją do formatu amerkańskiego…
Odkryłem to przez przypadek, stworzyłem kwerendę w QBE i tam wpisałem datę w postaci #2012-07-25#, kwerenda to był insert i zadziałała, natomiast z poziomu VBA i ADO krzyczała o niezgodnym formacie pola. Zdziwienie moje było gdy z widoku projektu kwerendy przeszedłem na widok SQL i tam format był amerykański…
W vba najprosciej go osiągnąć tak:

format("2012-07-25","m\/d\/yyyy")

Zakończenie

Mam nadzieje, ze oszczędzi to komuś trochę nerwów…

  1. OMG, ostatnio miałem problem z update rekordów z datami i stwierdziłem że tekstowy format musi mi wystarczyć. Oczywiście mści się to potwornie bo zamiast ograniczenia warunkiem to muszę sprawdzając dane w pętli interpretując ją na datę… wrr. W ORA to takie łatwe, a tu osobno insert i osobno update w innej konstrukcji koszmar.

    • zW SQL Server również z poziomu ADO jak robimy update na tabeli to używam konwerta: polezdata = convert(datetime,’2014-02-07′,121), bo bez tego wywali błąd konwersji, można też wprowadzić updatem datę w formacie yyyyMMdd, ‘20140207’ wtedy problemu nie ma, daty dla ludzi z poza ustawień US to generalnie temat na książkę;)

Reply to programistaaccess ¬
Cancel reply

NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

WordPress SEO fine-tune by Meta SEO Pack from Poradnik Webmastera
Skip to toolbar