Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Konwersja dowolnej daty z czasu serwera na czas użytkownika (dotyczy czasu standardowego i dziennego)

TimeZoneInfo tak, tak. (Jest to część frameworka .NET, a nie część C# - C# to po prostu język, którego używasz.) Jednak nie sądzę, że naprawdę chcesz to robić.

Dlaczego przechowujesz DateTime w serwerze strefa czasowa mimo wszystko? W większości przypadków rozsądniej byłoby przechowywać go w UTC. Pomijając wszystko inne, jeśli twój serwer znajduje się w strefie czasowej, w której obowiązuje czas letni, skończysz z niejasnością przez godzinę w roku, kiedy zegar się cofnie. (Ten sam czas lokalny występuje dwukrotnie.)

Gdy zapiszesz go jako UTC, powinieneś przekazać go również swojemu klientowi Javascript jako UTC. Chociaż mówisz, że masz "java script, który sprawi, że użytkownicy przesuną się z UTC" - będzie to zależeć od dokładnego momentu w czasie. Na przykład, ponieważ jestem w Wielkiej Brytanii, moje przesunięcie czasami wynosi 0, a czasami +1 godzina. Jeśli przekażesz czas UTC z powrotem do klienta, może to obliczyć czas lokalny z tego czasu UTC. Twój serwer nie, chyba że możesz uzyskać dokładne reprezentacja strefy czasowej od klienta do serwera, co na ogół jest trudne do zrobienia.

Ponownie sam C# nie ma tutaj znaczenia. Nie jest jasne, którą część platformy .NET masz na myśli — TimeZone ? TimeZoneInfo ? DateTime ? TimeZoneInfo ma dane historyczne, ale tylko wtedy, gdy korzystasz z wersji systemu operacyjnego, która je obsługuje.

Cóż, o ile ci zależy. Nie ma tak wielu danych historycznych jak TZDB i ma bardzo dziwne reprezentacje dla Rosji i Namibii, ale ogólnie ma pomysł na zmianę zasad.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Niezawodny sposób weryfikacji procedur składowanych T-SQL

  2. LINQ to SQL w każdym n-tym wierszu z tabeli

  3. SQL Server i luki w kolumnie tożsamości

  4. Jak łatwo i szybko sparametryzować ciąg o wartości null za pomocą DBNull.Value?

  5. Użyj OBJECTPROPERTY(), aby określić, czy obiekt jest widokiem w SQL Server