আপনি একটি নতুন কলাম যুক্ত করতে পারেন এবং @ জিবিএন-এর প্রস্তাবিত হিসাবে এটি ম্যানুয়ালি আপডেট করতে পারেন, তবে এখন আপনাকে constantlyোকানো / আপডেট ট্রিগার বা অন্য কোনও প্রক্রিয়া সহ এই কলামটি নিয়মিত আপডেট রাখতে হবে। টেবিল / কলামের নামগুলিতে @ জিবিএন'র অনুমানগুলি ধার করা, এখানে বেশ কয়েকটি ভিন্ন পদ্ধতির রয়েছে যা ধ্রুবক রক্ষণাবেক্ষণের প্রয়োজন হয় না।
গণিত কলাম
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;
আপনি যদি লেখার পারফরম্যান্স (বা স্টোরেজ) এর চেয়ে পড়ার পারফরম্যান্স সম্পর্কে বেশি উদ্বিগ্ন হন তবে আপনি কলামটি চালিয়ে যেতে চাইবেন।
দৃশ্য
নতুন কলামে দেখার একটি সুবিধা হ'ল আপনাকে বেস টেবিল স্কিমা পরিবর্তন করতে হবে না (বা এটি আপ টু ডেট রাখার বিষয়ে চিন্তা করা)। আপনি ক্যোয়ারির সময় গণনার মূল্য প্রদান করেন, যা অ-স্থায়ী গণিত কলামের সমান the
CREATE VIEW dbo.vMyTable
AS
SELECT -- other columns,
MyDateTimeColumn,
NewIntColumn = DATEDIFF(...whichever calc above makes sense...)
FROM dbo.MyTable;
রানটাইম
উপরের গণনাগুলি অতিরিক্ত জটিল নয়, কেবল আপনার ক্যোয়ারীতে গণনাটি অন্তর্ভুক্ত করুন। আশা করি আপনি ডেটা অ্যাক্সেসের জন্য সঞ্চিত পদ্ধতি ব্যবহার করছেন যাতে আপনি প্রায়শই এটি পুনরাবৃত্তি করেন না।