2010-10-14 14 views
8

एक SQL क्वेरी/प्रश्नों की तलाश है जो वर्तमान सप्ताह के प्रारंभ दिवस (सोमवार) को निर्धारित करेगा।वर्तमान सप्ताह के शुरुआती दिन (सोमवार) को ढूंढना

उदाहरण: तो आज है -> तो सप्ताह के शुरू

Sat Oct 09, 2010 -> Start of the week is Monday Oct 04, 2010 
Sun Oct 10, 2010 -> Start of the week is Monday Oct 04, 2010 
Mon Oct 11, 2010 -> Start of the week is Monday Oct 11, 2010 
Tue Oct 12, 2010 -> Start of the week is Monday Oct 11, 2010 

है मैं गूगल और StackOverflow पर कई "समाधान" देखा है। की तरह लग रहे कुछ:

SET @pInputDate = CONVERT(VARCHAR(10), @pInputDate, 111) 
SELECT DATEADD(DD, 1 - DATEPART(DW, @pInputDate), @pInputDate) 

यह विफल रहता है क्योंकि: सूर्य अक्टू 10, 2010 -> सप्ताह के शुरू होने से सोमवार अक्टू 11, 2010 (जो सही नहीं है)।

+0

आप केवल सोमवार या सप्ताह के पहले कार्य दिवस को खोजने की जरूरत है? –

+0

मैं सप्ताह की शुरुआत (सोमवार) चाहता हूं भले ही यह एक कामकाजी दिन या छुट्टी हो। –

उत्तर

12

DATEFIRST का उपयोग करके सप्ताह के दिन को 'पहले' के रूप में चिह्नित करने के लिए स्पष्ट रूप से सेट करने का प्रयास करें।

set DATEFIRST 1 --Monday 
select DATEADD(DD, 1 - DATEPART(DW, @pInputDate), @pInputDate) 

इस हफ्ते InputDate में गिर जाता है की सोमवार वापस आ जाएगी।

+0

मुझे एक और समाधान मिला, लेकिन यह एक बहुत ही सरल और क्लीनर है। धन्यवाद। –

+0

हम सोमवार को आखिरी सप्ताह में इसे कैसे ढूंढ सकते हैं? मैंने 1- की बजाय अभिव्यक्ति में 2- बनाने की कोशिश की, लेकिन कोई भाग्य नहीं। कोई सुझाव? –

संबंधित मुद्दे