मान लें कि हमारा दिनांक कॉलम char
है या varchar
, आप ऐसा कुछ कर सकते हैं
update foo
set dates = right(dates,4) + left(dates,4)
या यह
update foo
set dates = replace( convert(varchar,convert(datetime,dates,112),110) , '-' , '' )
यदि आप केवल प्रदर्शन करना चाहते हैं आपका टेक्स्ट अलग है, सबसे आसान तरीका है
select ... ,
dates = right(dates,4) + left(dates,4)
from foo
या एक दृश्य बनाएं और मूल तालिका के बजाय उसका उपयोग करें:
create view foo_view
as select id ,
dates = right(dates,4) + left(dates,4)
from foo
लेकिन यदि आप वास्तविक दिनांक/समय डेटा प्रकारों का उपयोग करते हैं, तो आपके डेटा के उपयोगकर्ता उन्हें क्लाइंट में उपयुक्त दिनांक/समय प्रकारों के लिए मैप करवाएंगे और फिर यह चुन सकते हैं कि उनकी आवश्यकताओं के लिए उन्हें सर्वोत्तम तरीके से कैसे प्रदर्शित किया जाए।
दिनांक/समय प्रकारों का उपयोग करने का दूसरा लाभ यह है कि वे डेटा अखंडता को लागू करते हैं . तब तक प्रतीक्षा करें जब तक कि कोई व्यक्ति इसे अमान्य करने के लिए कोई तिथि जोड़ या बदल न दे - मान लें, `20142331'। फिर, जब आपको उस डेटा को एक महीने के नाम ('जनवरी 22, 2014, मान लें) के साथ एक फॉर्म में प्रदर्शित करने की आवश्यकता होती है, तो जब आपको महीने की संख्या को एक महीने के नाम पर मैप करने का प्रयास करने का अपवाद मिलता है, तो उल्लास पैदा होगा।
यदि आप दिनांक/समय प्रकार का उपयोग नहीं करने जा रहे हैं, तो अखंडता को लागू करने के लिए उपयुक्त जांच बाधाओं के साथ वर्ष, माह और दिन को अलग-अलग पूर्णांक मानों के रूप में संग्रहीत करें:
create table foo
(
id int not null identity(1,1) primary key ,
yyyy int not null check ( yyyy between 1900 and 2100 ) ,
mm int not null check ( mm between 1 and 12 ) ,
dd int not null check ( dd between 1 and ( case mm
when 4 then 30
when 6 then 30
when 9 then 30
when 11 then 30
when 2 then case
when yyyy % 400 = 0 then 29
when yyyy % 100 = 0 then 28
when yyyy % 4 = 0 then 29
else 28
end
else 31
end
)
)