2011-09-28 5 views
14

मैं तालिका मूल्यों को उनकी तिथि और समय के अनुसार प्राप्त करने का एक इष्टतम निर्णय ढूंढ रहा हूं लेकिन केवल एक पिछले घंटे के भीतर।टी-एसक्यूएल (तिथि) - एक घंटे के भीतर मूल्य कैसे प्राप्त करें?

मैं इस तरह से कुछ मतलब (एक स्यूडोकोड):

  • value
  • date

:

SELECT value FROM Table WHERE date BETWEEN getdate() AND getdate()-ONE_HOUR 

इस सवाल Table के प्रयोजन के लिए इन स्तंभों है किसी भी उपयोगी स्निपेट की सराहना की जाती है :)

+0

एक नियम के रूप में, यह GetDate (आह्वान करने के लिए) एक बार और एक चर में मूल्य को बचाने, फिर आवश्यकतानुसार चर का उपयोग सबसे अच्छा है। यह आधी रात के आसपास नास्टियों के सभी प्रकार से बचाता है। – HABO

उत्तर

22
SELECT Value 
FROM Table 
WHERE Date between dateadd(hour, -1, getdate()) and getdate() 

विवरण:

DATEADD (datepart , number , date) 

निर्धारित संख्या अंतराल (हस्ताक्षर किए पूर्णांक) के साथ एक निर्धारित तिथि रिटर्न उस तारीख के एक निर्धारित DatePart को जोड़ा गया।

datepart  Abbreviations 
----------- ------------- 
year   yy, yyyy 
quarter  qq, q 
month  mm, m 
dayofyear dy, y 
day   dd, d 
week   wk, ww 
weekday  dw, w 
hour   hh 
minute  mi, n 
second  ss, s 
millisecond ms 
microsecond mcs 
nanosecond ns 

अधिक जानकारी:

+0

यह दिलचस्प है। धन्यवाद। और क्या होगा अगर मैं इस समारोह में 3 जैसे कॉन्स का उपयोग करता हूं? क्या यह मुझे पिछले 3 घंटे मूल्य परिणाम देगा? – user592704

+0

सकारात्मक। दिनांक मान (पैरामीटर 2) दिनांक मूल्य (पैरामीटर 3) में (या ऋणात्मक मान के साथ, घटाया गया) जोड़ा जाता है। यदि आप घंटे के बजाय दिन का उपयोग करते हैं, तो यह 1 घंटे के बजाय 1 (मेरे उदाहरण में) दिन घटाएगा, और एक -3 इसे 3 दिनों घटाएगा। –

2

ऐसा कुछ काम करना चाहिए।

DATEADD समारोह के
SELECT value 
FROM Table 
WHERE date >= dateadd(hour,-1,getdate()) 
    and date <= getdate() 
+0

आप सही हैं। मैंने अब क्वेरी बदल दी है। – Gabe

+0

टिप्पणी वापस ले लिया गया। मुझे यकीन नहीं है कि> = और <= या बीच अधिक कुशल है हालांकि ... एक दिन मुझे परीक्षण करना होगा। –

+3

@TheEvilGreebo - अब तक कोई फर्क नहीं पड़ता। भविष्यवाणी योजना में '> =' और '<=' के रूप में दिखाई देगी। –

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