Dane z MS SQL Server vs Postgresql

0

Dzień dobry.
Robię sobie proste zapytania do MS SQL 2019 oraz do Postgresql 17
SELECT max(Data) FROM Tabela

PG zwraca mi:
<class 'list'> [(datetime.datetime(2022, 11, 13, 19, 41, 11),)]

MS natomiast
<class 'list'> [(datetime.datetime(2022, 11, 17, 15, 0, 5, 707000), )]

Zwrot z PG nie stwarza problemów robię sobie z niego datetime
Zwrot z MS - 3 godziny i nic mi nie wychodzi. Jak to samo osiągnąć w tym nieszczęsnym?

4

MS SQL zwraca natywny typ - link. Nie powinno być z tym żadnego problemu. Zresztą zgadując po tym, co wkleiłeś, masz już zwrócone datetime, więc nie wiem, co chcesz więcej zrobić, żeby było to jeszcze bardziej datetime. Bardziej zielone już nie będzie ;-)

0

Niby oba są datetime.

Przy czym
w kolejnych krokach oba wyniki są przetwarzane

  1. Wynik do Panda dataframe (po coś mi to jest pozniej)
  2. Z 1 data str trafia do zmiennej fromisoformat
  3. Z 2 przetwarzam date i czas jakoś tam
  4. Itd.

Identyczne zapytania, prawie identyczny wynik, a dane z ms wywalają mi się w kroku 2.

To co mnie zastanawia, to spacja pod koniec wyniku z mssql
), )]

Tak czy inaczej potknąłem się o ten problem

0

Zaznaczę, że nie znam pythona, więc mogę strzelić w płot.

  1. Wykonujesz zapytanie na bazie MSSQL.
  2. Dostajesz silnie typowany set wyników.
  3. Wypisujesz wynik albo przekazujesz go gdzieś dalej.

Nie ma tu miejsca na jakieś stringi czy fromisoformat.

cursor.execute('select max(Data) as 'max' from table')
for row in cursor:
    print(row.max)

row.max zawiera już Twoją najnowszą datę w zmiennej o typie datetime. Amen.
Kwestia zmiany powyższego kodu, aby nie używał niepotrzebnie pętli, tylko pobrał pierwszy wynik.

Więcej przykładów znajdziesz np. tutaj, skąd pożyczyłem powyższy kod albo w google pod hasłem "python get results from mssql query".

To co mnie zastanawia, to spacja pod koniec wyniku z mssql
), )]

To nie wynik. To tylko jego reprezentacja po skonwertowaniu listy list (czy też listy słowników) do string...

0

Dziękuję za pomoc,
sprawa rozwiązana choć w głowie pozostał niedosyt, gdyż nadal nie wiem, czemu identyczne Działanie z danymi z postgresql działa a z ms nie.
Tak czy inaczej, przestałem sobie utrudniać życie, daty pozostały w pd i tam są przetwarzane. I działa.

0

@Yanno: jakie masz typy danych dla pola DATA w Postgresie i MSSQL? Możliwe, że w jednej z baz masz precyzję typu ułamki sekund, zaś w drugiej dokładność do sekund.

1 użytkowników online, w tym zalogowanych: 0, gości: 1