ďťż
 
ms sql server - =?ISO-8859-2?Q?domy=B6lny_format_kolumn_ty?==?ISO-8859-2?Q?pu_datetime?= ďťż
 
ms sql server - =?ISO-8859-2?Q?domy=B6lny_format_kolumn_ty?==?ISO-8859-2?Q?pu_datetime?=
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

ms sql server - =?ISO-8859-2?Q?domy=B6lny_format_kolumn_ty?==?ISO-8859-2?Q?pu_datetime?=



=?ISO-8859-2?Q?Jaros=B3aw_Lubczy=F1ski?= - 08-07-2006 00:13
ms sql server - =?ISO-8859-2?Q?domy=B6lny_format_kolumn_ty?==?ISO-8859-2?Q?pu_datetime?=
  Witam wszystkich.

Baza danych: MS SQL SERVER 2000
Interfejs: DB-LIBRARY (język C)

Mam problem z formatem danych typu datetime. Kolumny tego typu w
zleceniu SELECT sprzedawane są domyślnie w formacie 'MMM dd rrrr', czyli
np. 'Jan 3 2005', chciałbym, żeby domyślnym formatem był 'yyyy-mm-dd'
ustawiany w ramach bieżącej sesji. W ORACLE robi się to prosto poprzez
polecenie:

ALTER SESSION SET NLS_DATE_FORMAT = '...';

A jak w MS SQL? Istnieje tu co prawda instrukcja

SET DATEFORMAT ymd;

Ale działa ona niestety zgodnie z jej opisem w dokumentacji, czyli imho
nienajlepiej, tzn. wyłacznie na interpreter poleceń SQL:

<cytat>
This setting is used only in the interpretation of character strings as
they are converted to date values. It has no effect on the display of
date values.
</cytat>

OK, ale MSDN nic nie mówi (albo nie udało mi się znaleźć) jak uzyskać
podobny efekt przy poleceniu SELECT. Mogę oczywiście użyć funkcji convert:

SELECT CONVERT( char( 10), mydate, 20) FROM ...

i dostać wynik '2005-01-03'

Ale chciałbym też móc zastosować rozwiązanie typu

SELECT * FROM ...

z identycznym rezultatem.

Dziękuję za pomoc.

--
Pozdrawiam
Jarek Lubczyński

There are 10 kinds of people:
Those who understand binary and those who don't





Grzegorz Danowski - 08-07-2006 00:14
=?iso-8859-2?Q?Re:_ms_sql_server_-_domy=B6lny_format_kolumn_typu_datetime?=
  Użytkownik "Jarosław Lubczyński"
<eljot123_usun_od_pierwszej_cyfry@elkomtech.com.pl > napisał w wiadomości
news:e8l9rj$hcr$1@opal.futuro.pl...
> (...)
> OK, ale MSDN nic nie mówi (albo nie udało mi się znaleźć) jak uzyskać
> podobny efekt przy poleceniu SELECT. Mogę oczywiście użyć funkcji convert:
>
> SELECT CONVERT( char( 10), mydate, 20) FROM ...
>
> i dostać wynik '2005-01-03'
>
> Ale chciałbym też móc zastosować rozwiązanie typu
>
> SELECT * FROM ...
>
> z identycznym rezultatem.

Tak z ciekawości po co Ci to? Moim zdaniem takie sprawy (formatowanie wyniku
zapytania) powinieneś zostawić aplikacji klienckiej, która pobiera dane
surowe przez ADO albo ODBC.
G.




=?ISO-8859-2?Q?Jaros=B3aw_Lubczy=F1ski?= - 11-07-2006 00:09

  Grzegorz Danowski napisał(a):
> Użytkownik "Jarosław Lubczyński"
> <eljot123_usun_od_pierwszej_cyfry@elkomtech.com.pl > napisał w wiadomości
> news:e8l9rj$hcr$1@opal.futuro.pl...
>> (...)
>> OK, ale MSDN nic nie mówi (albo nie udało mi się znaleźć) jak uzyskać
>> podobny efekt przy poleceniu SELECT. Mogę oczywiście użyć funkcji
>> convert:
>>
>> SELECT CONVERT( char( 10), mydate, 20) FROM ...
>>
>> i dostać wynik '2005-01-03'
>>
>> Ale chciałbym też móc zastosować rozwiązanie typu
>>
>> SELECT * FROM ...
>>
>> z identycznym rezultatem.
>
> Tak z ciekawości po co Ci to?

O, powodów są miliony, a dokładniej tak ze cztery :-) :

1. Nie piszę aplikacji dla ms sql tylko portuję na tę bazę aplikację
działającą do tej pory na PostgreSQL, Oracle oraz Sybase ASA (windows,
linux). Z oczywistych powodów chciałbym zachować jednolitość aplikacji i
jak najmniejszą zależność zapytań od rdbms'a - o ile to możliwe.

2. Mamy w arsenale aplikacje, w których zapytania generowane są
automagicznie w oparciu o pewien zdefiniowany zestaw wejściowy - tu
również wskazana jest jak najmniejsza zależność reguł wejściowych od
rdbms'a.

3. Mam własną aplikację typu Interactive SQL (cóś jak oracle worksheet
czy sybase isql) używaną do celów projektowo-serwisowych - i chciałbym,
żeby w niej odpowiedź na zapytanie typu 'SELECT myDate FROM ...' a nawet
'SELECT * FROM ...' była możliwie taka sama dla różnych rdbms'ów. Udało
się do tej pory dla PgSQL'a, Sybase, Oracle, MySql'a i Informixa,
powinno się udać nawet dla MS SQL ;-)

4. Wykazuję czysto niezdrową ludzką ciekawość - chcę wiedzieć jak to się
robi ;-). A wiem, że można - ms sql query analyser na zapytanie 'SELECT
myDate FROM ...' odpowia *dokładnie* tak, jak tego oczekuję, czyli
formatem 'YYYY-MM-DD hh:mm:ss.ddd'.

> Moim zdaniem takie sprawy (formatowanie
> wyniku zapytania) powinieneś zostawić aplikacji klienckiej, która
> pobiera dane surowe przez ADO albo ODBC.

1. ADO czy nawet ODBC odpada z powodów wymienionych wyżej (pkt 1), z
konieczności muszę stosować API maksymalnie niskopoziomowe - DB-LIBRARY
jest tu (również z pewnych innych względów) jedynym rozwiązaniem,
zresztą też dostarcza 'surowych' danych.

2. Poniekąd tak, ale jeżeli mogę mieć 'słuszne' defaulty - to czemu mam
z nich nie skorzystać?

> G.

--
Pozdrawiam
Jarek Lubczyński

There are 10 kinds of people:
Those who understand binary and those who don't




=?ISO-8859-2?Q?Jaros=B3aw_Lubczy=F1ski?= - 19-07-2006 00:44

  Grzegorz Danowski napisał(a):
> Użytkownik "Jarosław Lubczyński"
> <eljot123_usun_od_pierwszej_cyfry@elkomtech.com.pl > napisał w wiadomości
> news:e8l9rj$hcr$1@opal.futuro.pl...
>> (...)
>> OK, ale MSDN nic nie mówi (albo nie udało mi się znaleźć) jak uzyskać
>> podobny efekt przy poleceniu SELECT. Mogę oczywiście użyć funkcji
>> convert:
>>
>> SELECT CONVERT( char( 10), mydate, 20) FROM ...
>>
>> i dostać wynik '2005-01-03'
>>
>> Ale chciałbym też móc zastosować rozwiązanie typu
>>
>> SELECT * FROM ...
>>
>> z identycznym rezultatem.
>
> Tak z ciekawości po co Ci to? Moim zdaniem takie sprawy (formatowanie
> wyniku zapytania) powinieneś zostawić aplikacji klienckiej, która
> pobiera dane surowe przez ADO albo ODBC.
> G.

Poradziłem sobie - w zasadzie zgodnie z Twoją sugestią. Po prostu
nadstawiam bufor typu DBDATETIME, podaję ten typ w funkcji dbcursorbind
a domyślną konwersję z typu DBDATETIME do char robię możliwie
niskopoziomowo tuż po odczycie wiersza - w ten sposób dostaję to co
chciałem i zachowuję jednolitą bibliotekę dostępu do baz sql niezależnie
od używanego RDBMS.

Dzięki.

Swoją drogą szkoda, że mssql nie daje możliwości zmiany domyślnego
formatu konwersji datetime -> char.

--
Pozdrawiam
Jarek Lubczyński

There are 10 kinds of people:
Those who understand binary and those who don't
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    [oracle] - Oracle SQL Developer - co to jest SID? [oracle] Baza danych do kursy Introduction to Oracle9i:PL/SQL ? Skąd ją pobrać ? konkurs SQL Injection - 10 PLN na GSM dla pierwszej osoby, ktora dostanie sie do bazy Re: Gdzie mozna jeszcze kupic Microsoft SQL 2000 Enterprise Edition?? ustawianie uprawnien uzytkownika SQL 2005 serwer express ORAZ w msde [sybase] migracja z SQL Aynwhere 9 na ASE 15 Express Edition - dasie? [msssql, transact-sql] prosze o zapytanie ktore odzwierciedlistrukturę bazy [SUBIEKT] Katastrofalny błąd - padła baza danych lub serwer SQL [Oracle][PL/SQL] Chłopaki pomozcie bo juz mi cycki opadajom... msSQL triger
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • czterowers.keep.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com