mojaSymfonia FORUM
https://forum.mix-soft.pl/

Konwersja daty Pervasive
https://forum.mix-soft.pl/viewtopic.php?f=15&t=4021
Strona 1 z 1

Autor:  kradzik [ 2012-06-18, 21:08 ]
Tytuł:  Konwersja daty Pervasive

Witam,
poszukuję informacji jak skonwertować datę dualną w bazie w wersji Btrieve z tabeli WARTOSCI_KADR (http://www.mix-soft.pl/wiedza/opiskd200 ... TOSCI_KADR)

Wiem że aby uzyskać aktualna datę należy obliczyć różnice miedzy "9999-12-31" a datą przechowywaną w konkretnym rekordzie tabeli. Wszystko byłoby ok gdyby nie fakt, że w przypadku pobierania większej ilości danych (połączenie do bazy Pervasive - C#,PsqlConnection) otrzymuje komunikat o błędnym formacie daty (pierwsze kilkanaście rekordów przechodzi)


Do pobrania daty wykorzystuję PsqlReader, który posiada metodę GetDateTime() jednak tak jak pisałem nie działa ona poprawnie, podczas pobierania danych juz samo proste zapytanie "select dual_poc from wartosci_kadr" wywala błąd (z poziomu c# - w pervasile jest ok). Zna ktoś sposób na pobranie wartości tej tabeli? Dodam że próbowałem prostej konwersji np. "select cast(dual_poc from as datetime) wartosci_kadr" jednak nie dało to oczekiwanego rezultatu. Przypuszczam że mogą istnieć jakieś nieznane mi metody konwersji?

Z góry dziękuję za pomoc

Autor:  rafal [ 2012-06-19, 11:14 ]
Tytuł:  Re: Konwersja daty Pervasive

Kod:
select
CAST(
CAST(CAST((9999-(dual_poc&(-65536))/65536) as INTEGER) as varchar(4))+'-'+
CAST(CAST((13-(dual_poc & 65280)/256) as INTEGER) as varchar(2))+'-'+
CAST(CAST((31-(dual_poc&255)) as INTEGER) as varchar(2))
as DATE)
from "WARTOSCI_KADR"

Autor:  kradzik [ 2012-06-20, 22:10 ]
Tytuł:  Re: Konwersja daty Pervasive

Ta konwersja działała u Ciebie? jak próbuje odpalić zapytanie w pervasile to niestety nie przechodzi.

Mam jeszcze jeden problem. Ciężko znaleźć informacje na ten temat na necie. W Kadrach i Płacach data rozpoczęcia umowy oraz data jej końca skonwertowana jest to formatu DWORD (chyba unit 32 bitowy). Tak więc data jest przechowywana jako "integer" (jeśli kolumna typ_wartosci w tabeli wartosci_kadr ma wartość = -2 kolumna element przechowuje datę jako intager - format dword)

W c# jest możliwość konwersji unit32 na datę jednak nie przynosi to rezultatu. Orientuje się ktoś jak wyciągnąć datę z tego formatu danych?

Strona 1 z 1 Strefa czasowa UTC+1godz. [letni]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/