आप एक नया कॉलम जोड़ सकते हैं और मैन्युअल रूप से इसे अपडेट कर सकते हैं जैसा कि @ जीबीएन ने सुझाव दिया है, लेकिन अब आपको इस कॉलम को लगातार सम्मिलित / अपडेट ट्रिगर या किसी अन्य तंत्र के साथ अद्यतित रखना होगा। तालिका / स्तंभ नामों पर @ gbn के अनुमानों का उधार लेना, यहां विभिन्न दृष्टिकोणों की एक जोड़ी है, जिन्हें निरंतर रखरखाव की आवश्यकता नहीं है।
कंप्यूटेड कॉलम
ALTER TABLE dbo.MyTable ADD NewIntColumn AS
CONVERT(INT, DATEDIFF(SECOND, '19000101', MyDateTimeColumn));
--or for Unix epoch
ALTER TABLE dbo.MyTable ADD NewIntColumn AS
CONVERT(INT, DATEDIFF(SECOND, '19700101', MyDateTimeColumn));
आप इस कॉलम को स्टोर करने के लिए क्वेरी प्रदर्शन को बंद कर सकते हैं और अनुक्रमणित कर सकते हैं, लेकिन आपको गणना में थोड़ा बदलाव करने की आवश्यकता होगी (ऊपर बने रहने की कोशिश करने से गणना गैर-नियतात्मक होने के बारे में त्रुटि उत्पन्न होगी):
ALTER TABLE dbo.MyTable ADD NewIntColumn AS
CONVERT(INT, DATEDIFF(SECOND, 0, MyDateTimeColumn)) PERSISTED;
-- or for Unix epoch
ALTER TABLE dbo.MyTable ADD NewIntColumn AS
CONVERT(INT, DATEDIFF(SECOND, 25567, MyDateTimeColumn)) PERSISTED;
यदि आप लेखन प्रदर्शन (या संग्रहण) की तुलना में पढ़ने के प्रदर्शन के बारे में अधिक चिंतित हैं तो आप कॉलम को जारी रखना चाहेंगे।
राय
एक नए स्तंभ पर एक दृश्य का एक लाभ यह है कि आपको आधार तालिका स्कीमा को बदलना नहीं है (या इसे अद्यतित रखने की चिंता करें)। आप क्वेरी समय पर गणना की लागत का भुगतान करते हैं, जो कि एक गैर-निरंतर कम्प्यूटेड कॉलम के समान है।
CREATE VIEW dbo.vMyTable
AS
SELECT -- other columns,
MyDateTimeColumn,
NewIntColumn = DATEDIFF(...whichever calc above makes sense...)
FROM dbo.MyTable;
क्रम
चूँकि उपरोक्त गणना अत्यधिक जटिल नहीं हैं, बस गणना को अपनी क्वेरी में शामिल करें। उम्मीद है कि आप डेटा एक्सेस के लिए संग्रहीत प्रक्रियाओं का उपयोग कर रहे हैं ताकि आप इसे अक्सर दोहरा नहीं रहे हैं।