2009-10-15 13 views
5

Po prostu muszę utworzyć tabelę stref czasowych SQL - w tym momencie moją jedyną potrzebą jest wypełnienie listy rozwijanej w formularzu online. Wyobrażam sobie coś prostego z kolumnami kodu ISO, nazwy, przesunięcia UTC i być może listy reprezentatywnych miast. Pomyślałem, że będę mógł łatwo znaleźć coś online do skopiowania i wklejenia, ale nie udało mi się niczego zlokalizować.Gdzie mogę uzyskać prostą tabelę stref czasowych do wykorzystania w serwerze SQL?

Zostałem wyreżyserowany przez this question do tz database, który jest w formie binarnej i wydaje się przesadą dla tego, czego potrzebuję. Ewentualnie mógłbym to zrobić z witryn takich jak TimeAndDate.com, ale wydaje się, że to więcej pracy niż to konieczne.

Czy robię coś niewłaściwego - np. czy powinienem otrzymywać te informacje z systemu operacyjnego serwera?

+0

Zależy od tego, co próbujesz zrobić i dlaczego jest to ważne. Możesz użyć obiektu daty javascripts w formularzu online, aby dowiedzieć się, w której strefie czasowej użytkownik skonfigurował swój komputer (niekoniecznie w tym momencie) – some

Odpowiedz

12

Czy jesteś na .NET 3.5? Możesz łatwo uzyskać listę stref czasowych w .NET 3.5, a następnie przechowywać te informacje (lub przynajmniej to, czego potrzebujesz) w bazie danych SQL Server.

Można iteracyjne nad wszystkie strefy czasowe dostępne i znane .NET 3.5 i przechowywać stosowne informacje do tabeli SQL Server:

ReadOnlyCollection<TimeZoneInfo> timeZones = TimeZoneInfo.GetSystemTimeZones(); 

foreach (TimeZoneInfo timeZone in timeZones) 
{ 
    // store whatever you need to store to a SQL Server table 
} 

Marc

+0

Doskonale, dziękuję. –

6

Wziąłem marc_s dodatkowo odpowiedzieć na krok - oto kod, aby utworzyć prostą tabelę czasową i kodu .NET, który generuje wkładek dla każdego rekordu UTC:

--TSQL TO CREATE THE TABLE 
CREATE TABLE [dbo].[TimeZones] (
[TimeZoneID]   INT    IDENTITY (1, 1) NOT NULL, 
[DisplayName] VARCHAR(100) NOT NULL, 
[StandardName]  VARCHAR (100) NOT NULL, 
[HasDST] BIT NOT NULL, 
[UTCOffset]  INT NOT NULL 
CONSTRAINT [PK_TimeZones] PRIMARY KEY CLUSTERED ([TimeZoneID] ASC) 
); 
GO 

do wygenerowania instrukcje wstawiania, stworzyłem projekt domyślny web .net przy użyciu visual studio i w widoku i wklejony ten, prowadził projekt, a następnie kopiowane renderowany kod (pamiętaj, aby skopiować go z pola widzenia źródła, a nie bezpośrednio na stronie hTML):

System.Collections.ObjectModel.ReadOnlyCollection<TimeZoneInfo> timeZones = TimeZoneInfo.GetSystemTimeZones(); 

foreach (TimeZoneInfo timeZone in timeZones) 
{ 
    Response.Write("INSERT INTO TimeZones (DisplayName, StandardName, HasDST, UTCOffset) VALUES ('" + timeZone.DisplayName.Replace("'", "''") + "', '" + timeZone.StandardName.Replace("'", "''") + "', '" + timeZone.SupportsDaylightSavingTime + "', '" + timeZone.BaseUtcOffset + "')" + Environment.NewLine); 
} 

Nadzieja pomaga to

1

lista wszystkich stref czasowych tutaj:

select * from sys.time_zone_info 

Enjoy!

+2

Tylko SQL 2016+. – Ray

Powiązane problemy