2009-10-15 8 views
5

मुझे बस समय क्षेत्र की एक SQL तालिका बनाने की आवश्यकता है - इस बिंदु पर, मेरी एकमात्र आवश्यकता ऑनलाइन फॉर्म पर एक ड्रॉप-डाउन सूची को पॉप्युलेट करना है। मैं आईएसओ कोड, नाम, यूटीसी ऑफसेट, और शायद प्रतिनिधि शहरों की एक सूची के लिए कॉलम के साथ कुछ सरल कल्पना कर रहा हूं। मैंने सोचा कि मैं कॉपी-पेस्ट करने के लिए ऑनलाइन कुछ आसानी से ढूंढ पाऊंगा, लेकिन कुछ भी ढूंढने में सक्षम नहीं हूं।SQL सर्वर में उपयोग के लिए मुझे समय क्षेत्र की एक साधारण तालिका कहां मिल सकती है?

मुझे this questiontz database पर निर्देशित किया गया था, जो बाइनरी रूप में है और मुझे जो चाहिए उसे ओवरकिल की तरह लगता है। वैकल्पिक रूप से मैं इसे TimeAndDate.com जैसी साइटों से एक साथ टुकड़ा कर सकता हूं, लेकिन यह आवश्यक होने की तुलना में अधिक काम की तरह लगता है।

या क्या मैं इस बारे में गलत तरीके से जा रहा हूं - उदा। क्या मुझे यह जानकारी सर्वर के ओएस से मिल रही है?

+0

आप जो करने की कोशिश कर रहे हैं उस पर निर्भर करता है और यह जानना महत्वपूर्ण क्यों है। आप ऑनलाइन फॉर्म पर जावास्क्रिप्ट डेट-ऑब्जेक्ट का उपयोग यह पता लगाने के लिए कर सकते हैं कि उपयोगकर्ता ने किस समय कंप्यूटर को अपने कंप्यूटर को कॉन्फ़िगर किया है (आवश्यक नहीं है कि वे इस समय कहाँ हैं) – some

उत्तर

12

आप .NET 3.5 पर हैं? आप आसानी से .NET 3.5 में टाइमज़ोन की एक सूची प्राप्त कर सकते हैं और उसके बाद उस जानकारी को संग्रहीत कर सकते हैं (या कम से कम जो भी आपको इसकी आवश्यकता है) अपने SQL सर्वर डेटाबेस में।

आप उपलब्ध है और .NET 3.5 के लिए जाना जाता सभी समय क्षेत्र से अधिक पुनरावृति और एक एसक्यूएल सर्वर मेज पर प्रासंगिक जानकारी संग्रहीत कर सकती है:

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

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

मार्क

+0

बिल्कुल सही, धन्यवाद। –

6

मैं marc_s आगे एक कदम का जवाब ले गया - यहाँ एक सरल समय क्षेत्र की मेज और .net कोड है कि प्रत्येक यूटीसी रिकार्ड के लिए आवेषण उत्पन्न करता है बनाने के लिए कोड है:

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

डालने बयान बनाने के लिए, मेरे द्वारा बनाए गए एक डिफ़ॉल्ट वेब .net परियोजना दृश्य स्टूडियो और देखने मैं इस चिपकाया में, परियोजना भाग गया और (सीधे 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); 
} 

आशा यह

में मदद करता है
1

सभी समय क्षेत्र की सूची यहां हैं:

select * from sys.time_zone_info 

का आनंद लें!

+2

केवल एसक्यूएल 2016+। – Ray

संबंधित मुद्दे