Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

संग्रहीत कार्यविधि के लिए एक SqlParameter में दिनांक समय का उपयोग करना, प्रारूप त्रुटि

आप SqlParameter को कैसे सेट कर रहे हैं? ? आपको SqlDbType सेट करना चाहिए SqlDbType.DateTime . के लिए संपत्ति और फिर DateTime . पास करें सीधे पैरामीटर पर (एक स्ट्रिंग में कनवर्ट न करें, आप तब समस्याओं का एक गुच्छा मांग रहे हैं)।

आपको डीबी में मूल्य प्राप्त करने में सक्षम होना चाहिए। यदि नहीं, तो इसे कैसे करें इसका एक बहुत ही सरल उदाहरण यहां दिया गया है:

static void Main(string[] args)
{
    // Create the connection.
    using (SqlConnection connection = new SqlConnection(@"Data Source=..."))
    {
        // Open the connection.
        connection.Open();

        // Create the command.
        using (SqlCommand command = new SqlCommand("xsp_Test", connection))
        {
            // Set the command type.
            command.CommandType = System.Data.CommandType.StoredProcedure;

            // Add the parameter.
            SqlParameter parameter = command.Parameters.Add("@dt",
                System.Data.SqlDbType.DateTime);

            // Set the value.
            parameter.Value = DateTime.Now;

            // Make the call.
            command.ExecuteNonQuery();
        }
    }
}

मुझे लगता है कि यहां इस मुद्दे का हिस्सा यह है कि आप चिंतित हैं कि तथ्य यह है कि यूटीसी में समय SQL सर्वर को नहीं बताया जा रहा है। इसके लिए, आपको ऐसा नहीं करना चाहिए, क्योंकि SQL सर्वर यह नहीं जानता है कि एक विशेष समय किसी विशेष लोकेल/समय क्षेत्र में है।

यदि आप UTC मान को संग्रहीत करना चाहते हैं, तो इसे SQL सर्वर में भेजने से पहले इसे UTC में परिवर्तित करें (जब तक कि आपके सर्वर का वही समय क्षेत्र न हो जो क्लाइंट कोड DateTime उत्पन्न करता है) , और फिर भी, यह एक जोखिम है, आईएमओ)। SQL सर्वर इस मान को संग्रहीत करेगा और जब आप इसे वापस प्राप्त करेंगे, यदि आप इसे स्थानीय समय में प्रदर्शित करना चाहते हैं, तो आपको इसे स्वयं करना होगा (जो कि DateTime struct आसानी से करेगा)।

यह सब कहा जा रहा है, यदि आप रूपांतरण करते हैं और फिर परिवर्तित UTC तिथि (वह तिथि जो ToUniversalTime पर कॉल करके प्राप्त की जाती है) पास करते हैं। विधि, एक स्ट्रिंग में कनवर्ट करके नहीं) संग्रहीत कार्यविधि में।

और जब आपको मान वापस मिल जाए, तो ToLocalTime . पर कॉल करें स्थानीय समय क्षेत्र में समय प्राप्त करने की विधि।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर में ग्रुप बाय, होने और कहां क्लॉज का निष्पादन क्रम?

  2. SQL सर्वर 2008 में लीड लैग फ़ंक्शन का वैकल्पिक

  3. मैं सक्रिय SQL सर्वर कनेक्शन कैसे देख सकता हूँ?

  4. SQL क्वेरी महीने के अंतिम दिन को खोजने के लिए

  5. एसक्यूएल में कॉलम और पंक्तियों को स्थानांतरित करने का आसान तरीका?