Dzień dobry ponownie,
Podpowiedzcie mi co zrobić. W bazie danych mam zapisaną datę w postaci YYYY-MM-DD HH:MM:SS.XXX. Godzina zawsze jest 00:00:00.000, więc nieistotna. Natomiast po pobraniu danych, data wyświetla mi się w formacie: DD.MM.YYYY. Niby zrozumiałe, polski system. Jak zrobić, aby wyświetlała się w formacie: YYYY-MM-DD??? Wiem, że lamerskie pytanie, ale nie mogę sobie z tym poradzić.
- Rejestracja:ponad 22 lata
- Ostatnio:około 8 godzin
- Postów:297
- Rejestracja:prawie 7 lat
- Ostatnio:około miesiąc
- Postów:3561
Buster napisał(a):
Dzień dobry ponownie,
Podpowiedzcie mi co zrobić. W bazie danych mam zapisaną datę w postaci YYYY-MM-DD HH:MM:SS.XXX. Godzina zawsze jest 00:00:00.000, więc nieistotna. Natomiast po pobraniu danych, data wyświetla mi się w formacie: DD.MM.YYYY. Niby zrozumiałe, polski system. Jak zrobić, aby wyświetlała się w formacie: YYYY-MM-DD??? Wiem, że lamerskie pytanie, ale nie mogę sobie z tym poradzić.
Załóżmy optymistycznie, że w bazie masz prawdziwą kolumnę datową (binarnie, ona nie ma żadnego formatu).
Formatuje narzędzie, którym to oglądasz.
Literalnie traktując Twoją wypowiedź, by wychodziło, że masz w polu znakowym sformatowaną w pewien sposób. Precyzja określeń JEST ważna.

- Rejestracja:ponad 13 lat
- Ostatnio:około 4 godziny
- Lokalizacja:Tuchów
- Postów:12171
@Buster: jeśli masz datę zapisaną w zmiennej (obstawiam, że typu TDateTime
), to możesz ją przekonwertować na ciąg znaków np. za pomocą funkcji FormatDateTime
. Możesz określić format danych (kolejność składowych) oraz podać strukturę z ustawieniami regionalnymi (albo tego nie robić i skorzystać z tej domyślnej). Przykład:
var
DateTime: TDateTime;
DateLine: String;
begin
DateTime := Now();
DateLine := FormatDateTime('YYYY-MM-DD', DateTime);
W zmiennej DateLine
znajdzie się łańcuch 2020-08-03
.

- Rejestracja:prawie 20 lat
- Ostatnio:ponad 3 lata
- Lokalizacja:Świecie
procedure TForm1.Button1Click(Sender: TObject);
var
Data : TDateTime;
begin
Data := Now();
Caption := FormatDateTime('YYYY-MM-DD, HH:MM:SS:ZZZ', Data); // myslę, że zamiast XXX powinno być ZZZ
end;
Po drugie moim zdaniem żadne bazy nie bawią się w zapis milisekund do odczytu dla uzytkownika. Ograniczają się dla bezpieczeństwa co do zapisu HH:MM:SS. No chyba, że Masz do czynienia z zegarem atomowym, który jest w Niemczech. O co mi dokładnie chodzi. a o to, że kiedy Tworzysz zmienną a ona jest przypisana HH:MM:SS nie musisz bawić się w milisekundy. Np Janek HH:MM:SS, Bartek HH:MM:SS. Zapis do bazy danych musi być zawsze natychmiastowy, beż żadnych ozdobników. One już same mogą w swej istocie spowolnić prace procesora a co za tym idzie przekłamanie ZZZ.
- Rejestracja:ponad 21 lat
- Ostatnio:13 dni
- Postów:1083
Bruno(M) napisał(a):
procedure TForm1.Button1Click(Sender: TObject); var Data : TDateTime; begin Data := Now(); Caption := FormatDateTime('YYYY-MM-DD, HH:MM:SS:ZZZ', Data); // myslę, że zamiast XXX powinno być ZZZ end;
Po drugie moim zdaniem żadne bazy nie bawią się w zapis milisekund do odczytu dla uzytkownika.
MSSQL w typie datetime
trzyma dane z dokładnością do 1/300 sekundy (a dokładnie wartkości milisekund jest zaokrąglana do najbliższej wartości 0,000, 0.003 lub .007), a w typie datetime2
z dokładnością do 100 nanosekund, a więc każda milisekunda zostanie zapisana.
I to by było tyle w temacie Twojego zdania.
Ograniczają się dla bezpieczeństwa co do zapisu HH:MM:SS.
Bezpieczeństwa?
A co tu jest niebezpiecznego?
No chyba, że Masz do czynienia z zegarem atomowym, który jest w Niemczech.
Ale mam do czynienia z (powiedzmy) IoT i potrzebuję takiej dokładności.
O co mi dokładnie chodzi. a o to, że kiedy Tworzysz zmienną a ona jest przypisana HH:MM:SS nie musisz bawić się w milisekundy. Np Janek HH:MM:SS, Bartek HH:MM:SS.
To że tak to widać, to nie oznacza że w tej zmiennej tych wartości nie ma.
Format wyświetlania a same dane, to są dwie zupełnie różne i niezależne od siebie sprawy.
Zapis do bazy danych musi być zawsze natychmiastowy, beż żadnych ozdobników. One już same mogą w swej istocie spowolnić prace procesora a co za tym idzie przekłamanie ZZZ.
To są jakieś czary i zaklinanie rzeczywistości a nie rzetelna wiedza.
- screenshot-20200806122222.png (1 MB) - ściągnięć: 33
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.
Mariusz Bruniewski