2009-10-15 3 views
5

Ich muss nur eine SQL-Tabelle der Zeitzonen erstellen - an dieser Stelle ist es nur erforderlich, eine Dropdown-Liste in einem Online-Formular aufzufüllen. Ich stelle mir etwas Einfaches mit Spalten für ISO-Code, Name, UTC-Offset und vielleicht eine Liste repräsentativer Städte vor. Ich dachte, ich könnte leicht etwas zum Kopieren und Einfügen finden, aber ich konnte nichts finden.Wo kann ich eine einfache Tabelle mit Zeitzonen für die Verwendung in SQL Server erhalten?

Ich wurde von this question an die tz database gerichtet, die in binärer Form ist und scheint wie Overkill für das, was ich brauche. Alternativ könnte ich dies auch aus Websites wie TimeAndDate.com zusammensetzen, aber das scheint mehr Arbeit als nötig zu sein.

Oder gehe ich in die falsche Richtung - z. sollte ich diese Informationen vom Betriebssystem des Servers erhalten?

+0

Hängt davon ab, was Sie zu tun versuchen und warum es wichtig ist zu wissen. Sie können javascripts date-object im Online-Formular verwenden, um herauszufinden, in welcher Zeitzone der Benutzer seinen Computer konfiguriert hat (nicht unbedingt, wo er sich gerade befindet). – some

Antwort

12

Sind Sie auf .NET 3.5? Sie können in .NET 3.5 einfach eine Liste der Zeitzonen abrufen und diese Informationen (oder zumindest, was immer Sie benötigen) in Ihrer SQL Server-Datenbank speichern.

Sie konnten alle Zeitzonen verfügbar iterieren und bekannt zu .NET 3.5 und speichern Sie die relevanten Informationen zu einer Tabelle 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

Perfekt, danke. –

6

ich marc_s ging einen Schritt weiter zu beantworten - hier ist der Code eine einfache Zeitzone Tabelle und .net-Code zu erstellen, der die Einsätze für jeden UTC Datensatz erzeugt:

--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 

die Insert-Anweisungen zu generieren, habe ich eine Standard-Web-.net-Projekt mit Visual Studio und in der Ansicht, die ich diese geklebt, lief das Projekt, und dann kopiert den gerenderten Code (erinnern sie es aus Sicht Quelle zu kopieren, nicht direkt von der hTML-Seite):

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); 
} 

Hoffnung das hilft

1

die Liste aller Zeitzone sind hier:

select * from sys.time_zone_info 

Viel Spaß!

+2

Nur SQL 2016+. – Ray

Verwandte Themen