विचार यहाँ निहितार्थ पुनर्लेखन नियम का उपयोग करने के लिए है:
(NOT (DATEPART(HOUR, CURRENT_TIMESTAMP) >= 16)
OR (DATEDIFF(DAY, CURRENT_TIMESTAMP, MailDate) = 1))
करने के लिए अपने मामले में
IF (x) THEN (y) is equivalent to (NOT (x) OR y)
IF (DATEPART(HOUR, CURRENT_TIMESTAMP) >= 16)
THEN (DATEDIFF(DAY, CURRENT_TIMESTAMP, MailDate) = 1)
बराबर है और खुद के बराबर है
((DATEPART(HOUR, CURRENT_TIMESTAMP) < 16)
OR (DATEDIFF(DAY, CURRENT_TIMESTAMP, MailDate) = 1))
को फिर से लिखकर अपने आप में एक IF..THEN
बयान के रूप में मूल ELSE
खंड:
IF (DATEPART(HOUR, CURRENT_TIMESTAMP) < 16)
THEN (DATEDIFF(DAY, CURRENT_TIMESTAMP, MailDate) = 0)
(इस समय मध्यवर्ती चरण omiting)
((DATEPART(HOUR, CURRENT_TIMESTAMP) >= 16)
OR (DATEDIFF(DAY, CURRENT_TIMESTAMP, MailDate) = 0))
दो अभिव्यक्ति के बराबर है इसके बाद संयोजन सामान्य रूप में लिखना ("AND
एस की श्रृंखला)
SELECT *
FROM the_table
WHERE ((DATEPART(HOUR, CURRENT_TIMESTAMP) < 16)
OR (DATEDIFF(DAY, CURRENT_TIMESTAMP, MailDate) = 1))
AND
(((DATEPART(HOUR, CURRENT_TIMESTAMP) >= 16
OR (DATEDIFF(DAY, CURRENT_TIMESTAMP, MailDate) = 0)) ;
अरे RobIII, दोस्त। बस कहना चाहता था, मैंने आपको उकसाया था, लेकिन डाउनवॉट्स इस पोस्ट में वार्तालापों का परिणाम हो सकता है। इसे व्यक्तिगत रूप से न लें, हम सब कुछ हमेशा सीख सकते हैं :) बस इसे लिखने के बारे में सोचना याद रखें क्योंकि आप इसे पोस्ट करते हैं और विचार करते हैं कि यह दूसरों के सामने कैसे आ सकता है। मैं और अन्य यहां SO को एक दोस्ताना समुदाय बनाने के लिए कड़ी मेहनत करते हैं जो सभी कौशल स्तरों का स्वागत करता है और हर किसी को मौका देता है। ऐसा लगता है कि तुम्हारा जवाब भी उत्तर के रूप में चिह्नित किया गया है, इसलिए बधाई हो, और एक अच्छा दिन हो! – mellamokb
रोबेल, मैंने आपको ऊपर उठाया और यदि यह आपको बेहतर महसूस करता है, तो मैं यह कहना चाहूंगा कि मैंने आपका कोड लागू किया क्योंकि यह बहुत कुशल दिखता था। बेशक इसे समझने में थोड़ी देर लग गई। :) बहुत बहुत धन्यवाद – user1345260