मैं वर्तमान में इसके लिए शून्य (0) तिथि के साथ डेटैड/डेटिडिफ संस्करण का उपयोग कर रहा हूं। कोई कास्टिंग आवश्यक नहीं:
select dateadd(minute, datediff(minute,0,GETDATE()) / 15 * 15, 0)
GETDATE() आपका डेटाटाइम जो भी हो।
अतिप्रवाह के कारण डेटीफ के विफल होने से पहले यह कम से कम वर्ष 5500 तक की तारीखों के लिए काम करेगा। हालाँकि यदि आप दूसरी सटीकता का उपयोग करने का प्रयास करते हैं, तो उपरोक्त तुरंत विफल हो जाएगा।
किसी अन्य निश्चित तिथि का उपयोग करना, जैसे '2009-01-01', या आज की तारीख (चेतावनी, अधिक बदसूरत SQL) इसे ठीक कर देगी। भविष्य की तारीख भी काम करेगी। जब तक इसका समय 00:00:00 है तब तक आप इस पर एक और डेटाटाइम आधारित कर सकते हैं।
उदाहरण के लिए:निकटतम 30 सेकंड के लिए गोल:
select dateadd(second, round(datediff(second, '2010-01-01', GETDATE()) / 30.0, 0) * 30, '2010-01-01');