Crystal Reports jest bardzo często zintegrowany z popularnymi aplikacjami. Przykładem jest system CDN Optima. Początkujących użytkownikom sprawiają kolumny z datą, bo data nie jest zapisana jako datetime lecz jako liczba.
Otóż data w CDN Optima zapisana jest w formacie Clarion, czyli liczba dni, które upłynęły od daty 1800-12-28. (Czy ktoś wie co to za data w historii?)Dlatego jeśli chcemy użyć takiego pola na raporcie, pierwsze co powinniśmy zrobić to dokonać konwersji liczby na datę. W innym przypadku Crystal Reports nie będzie wiedział, że jest to data i żadne formatowanie dat, grupowanie po okresach nie będzie działać.
Formuła do konwersji formatu Clarion na datę:
Jeśli mamy wiele takich pól to najlepiej utworzyć własną funkcję:
Komentarze
1. Tzw. "Krótki Clarion" - ciąg 5 cyfr, które przechowują informację o ilości dni od daty '1800-12-28' - służy do zapisu dnia
2. Tzw. "Długi Clarion" - ciąg 9 cyfr, które przechowują informację o ilości sekund od daty '1990-01-01' - służy do zapisu dnia i godziny
3. Zwykła data w SQL, w części struktur data jest kodowana jako datetime lub date na bazie.
Dodatkowo należy znać metody konwersji z Clariona na datę i odwrotnie:
--Data w postaci długiego Clariona (może on zwracać również godzinę)
SELECT DATEDIFF(s, CONVERT(datetime, '1990-01-01', 120), CONVERT(datetime,GETDATE(), 120))
--Data w postaci krótkiego Clariona (zwraca tylko datę)
select DATEDIFF(d,CONVERT(date,'1800-12-28',120),convert(date,GETDATE(),120))
--Zamiana długiego Clariona na DateTime
select DATEADD(second,123456789,CONVERT(DATETIME,'1990-01-01',120))
--Zamiana krótkiego Clariona na Date
select DATEADD(day,73691,CONVERT(DATE,'1800-12-28',120))
Chyba napiszę u siebie o tym artykuł, dawno o tym nic nie dodawałem.
https://www.goldenline.pl/grupy/Komputery_Internet/crystal-reports/time-clarion-do-cr,3928886/#59976066