निम्न क्वेरी डेटाइम फ़ील्ड को अद्यतन नहीं करता है:
update table
SET EndDate = '2009-05-25'
WHERE Id = 1
मैंने इसे बिना किसी डैश के भी आज़माया, लेकिन यह भी काम नहीं करता है।
निम्न क्वेरी डेटाइम फ़ील्ड को अद्यतन नहीं करता है:
update table
SET EndDate = '2009-05-25'
WHERE Id = 1
मैंने इसे बिना किसी डैश के भी आज़माया, लेकिन यह भी काम नहीं करता है।
EndDateकॉलम के लिए डेटा प्रकार क्या है ?
जवाबों:
जब संदेह हो, तो CAST / CONVERT का उपयोग करके डेटा प्रकार रूपांतरण के बारे में स्पष्ट हो :
UPDATE TABLE
SET EndDate = CAST('2009-05-25' AS DATETIME)
WHERE Id = 1
आम तौर पर, यह काम करना चाहिए।
लेकिन क्या आप यह कोशिश कर सकते हैं? मेरे घर पीसी पर मेरे पास एसक्यूएल नहीं है, मैं खुद कोशिश नहीं कर सकता
UPDATE table
SET EndDate = '2009-05-25 00:00:00.000'
WHERE Id = 1
स्ट्रिंग डेटाल मौजूदा डेटफ़ॉर्मेट सेटिंग के अनुसार पोज़ किया जाता है, देखें SET DATEFORMAT । एक प्रारूप जो हमेशा काम करेगा वह है '20090525'।
अब, निश्चित रूप से, आपको 'काम नहीं करता है' को परिभाषित करने की आवश्यकता है। कोई रिकॉर्ड अपडेट नहीं किया जाता है? शायद वहId=1 किसी रिकॉर्ड से मेल नहीं खाता ...
यदि यह कहता है कि 'एक रिकॉर्ड बदल गया' तो शायद आपको हमें यह दिखाने की आवश्यकता है कि आप कैसे सत्यापित करते हैं ...
SET DATEFORMATविभिन्न स्थानीयकरणों के साथ वातावरण के लिए एसक्यूएल लिखते समय वास्तव में प्रभावी है
डेटटाइम पैरामीटर का उपयोग करना सबसे अच्छा तरीका है। हालाँकि, यदि आप अभी भी एक स्ट्रिंग के रूप में डेटटाइम पास करना चाहते हैं, तो सीएएसटी आवश्यक नहीं होना चाहिए, क्योंकि एक भाषा अज्ञेय प्रारूप का उपयोग किया जाता है।
जैसे
दी गई तालिका की तरह:
create table t1 (id int, EndDate DATETIME)
insert t1 (id, EndDate) values (1, GETDATE())
निम्नलिखित को हमेशा काम करना चाहिए:
update t1 set EndDate = '20100525' where id = 1 -- YYYYMMDD is language agnostic
निम्नलिखित काम करेगा:
SET LANGUAGE us_english
update t1 set EndDate = '2010-05-25' where id = 1
हालाँकि, यह नहीं होगा:
SET LANGUAGE british
update t1 set EndDate = '2010-05-25' where id = 1
ऐसा इसलिए है क्योंकि 'YYYY-MM-DD' एक भाषा अज्ञेय प्रारूप नहीं है (SQL सर्वर के दृष्टिकोण से)।
आईएसओ 'YYYY-MM-DDThh: mm: ss' प्रारूप भी भाषा अज्ञेयवादी है, और उपयोगी है जब आपको गैर-शून्य समय पास करने की आवश्यकता होती है।
अधिक जानकारी: http://karaszi.com/the-ultimate-guide-to-the-datetime-datatypes
UPDATE TABLE
SET EndDate = CAST('2017-12-31' AS DATE)
WHERE Id = '123'
यदि आप किसी समय को निर्दिष्ट करने में रुचि नहीं रखते हैं, तो आप ' DD / MM / YYYY ' प्रारूप का भी उपयोग कर सकते हैं , हालांकि मैं एक रूपांतरण से चिपका रहूंगा विधि और इसके प्रासंगिक ISO प्रारूप से रहूंगा, क्योंकि आपको वास्तव में डिफ़ॉल्ट मानों का उपयोग करने से बचना चाहिए।
यहाँ एक उदाहरण है:
SET startDate = CONVERT(datetime,'2015-03-11T23:59:59.000',126)
WHERE custID = 'F24'