SQL में बिना समय का चयन कैसे करें


257

जब मैं एसक्यूएल में तारीख का चयन करता हूं तो इसे वापस कर दिया जाता है 2011-02-25 21:17:33.933। लेकिन मुझे केवल तारीख का हिस्सा चाहिए, वह है 2011-02-25। मैं यह कैसे कर सकता हूँ?


4
मुझे लगता है कि वह एक स्ट्रिंग चाहता है, और इसलिए यह कोई नकली नहीं है
bernd_k


@TylerH वर्तमान समय के बजाय 2011-02-25 00: 00: 00.000 पाने का कोई तरीका है?
थ्रिंडर

जवाबों:


148

मुझे लगता है कि वह एक तार चाहता है।

select convert(varchar(10), '2011-02-25 21:17:33.933', 120)

120 यहाँ परिवर्तित समारोह है कि हम में इनपुट तारीख पारित बताता निम्न स्वरूप : yyyy-mm-dd hh:mi:ss


120 के लिए क्या है?
Павле


मैंने इस चुनिंदा कन्वर्ट (varchar (10), APPROVED_DATE, 120) का उपयोग किया, मुझे त्रुटि कॉलम APPROVED_DATE डेटाइम मिला, मैं इसे कैसे बदलूंगा? त्रुटि बहु-भाग पहचानकर्ता "LAB_RESULTS.APPROVED_DATE" बाध्य नहीं किया जा सका।
अब्दुल्ला

530

SQL Server 2008 के लिए:

Convert(date, getdate())  

कृपया https://docs.microsoft.com/en-us/sql/t-sql/functions/getdate-transact-sql देखें


6
मुझे लगता है कि "टाइप तिथि एक परिभाषित प्रणाली प्रकार नहीं है।"
सीड्राइव

10
DATE2008 में नया है।
टिम शाल्टर

33
मुझे नहीं पता कि यह इस तरह का उत्कट जवाब क्यों है। यह प्रश्न SQL Server 2005, 2008 के लिए नहीं है । 2005 में dateडेटा-प्रकार नहीं है इसलिए इस समाधान को अमान्य करार दिया गया है।
यहोशू बर्न्स

84
इसे उकेरा गया है क्योंकि लोग अपनी समस्या के समाधान की तलाश में आते हैं, लेखकों की नहीं। तो अगर 110 लोगों ने पाया कि यह उनके लिए काम कर रहा है, तो मुझे लगता है कि यह उचित है कि इसमें 110 बदलाव हैं।
जेम्स

मैं एक ही त्रुटि है जब मैं चुनिंदा कन्वर्ट (table.order_date, getdate ()) का उपयोग करता हूं; sql सर्वर संस्करण 2017, त्रुटि (टाइप तिथि परिभाषित प्रणाली प्रकार नहीं है) स्तंभ प्रकार डेटाइम
अब्दुल्ला

57

सबसे तेज़ है datediff, जैसे;

select dateadd(d, datediff(d,0, [datecolumn]), 0), other..
from tbl

लेकिन अगर आपको केवल मूल्य का उपयोग करने की आवश्यकता है, तो आप डेटाड को छोड़ सकते हैं, जैसे

select ...
WHERE somedate <= datediff(d, 0, getdate())

जहाँ अभिव्यक्ति datediff(d, 0, getdate())बिना समय के भाग के आज की तारीख को लौटाने के लिए पर्याप्त है।


Oldie लेकिन गुडी, ने पुराने 2000/2005 DB में दर्जनों बार इस चाल का इस्तेमाल किया।
कीथ

43

CAST (GETDATE () तारीख के रूप में) का प्रयोग करें, जो मेरे लिए सरल है।


मैं अपना कॉलम नाम कहां जोड़ूंगा? चयन करें (तारीख के रूप में प्राप्त करें (), ऑर्डर_डेट)?
अब्दुल्ला

@ अब्दुल्लाCAST(order_date AS DATE)
एंड्रयू मोर्टन


12

आप इस तरह का उपयोग कर सकते हैं

SELECT Convert(varchar(10), GETDATE(),120) 

मैं अपना कॉलम नाम आदेश दिनांक कहां डालूंगा?
अब्दुल्ला

10

के लिए 2008 पुराने संस्करण :

SELECT DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0)


इसके लिए तालियाँ! अन्य समाधान केवल varchar (10) भाग पर निर्भर करते हैं, जो सिर्फ मूल्य को काटता है।
गोंजा ओविडियो

2

यह थोड़ा देर से है, लेकिन ODBC "दही" फ़ंक्शन का उपयोग करें (कोण ब्रैक्स 'fn' ODBC फ़ंक्शन एस्केप अनुक्रम है)।

SELECT {fn curdate()} 

आउटपुट: 2013-02-01


4
मैं ईमानदारी से इस बात पर उत्सुक हूं कि आप कैसे सोचते हैं कि आपका उत्तर स्वीकृत उत्तर से बेहतर है। या जहाँ आप शायद अन्य उत्तरों की बात कर रहे हैं?
मिकेल एरिकसन

1
@ मिकेल एरिकसन: हम्म, क्योंकि ओडीबीसी-फंक्शंस नॉनडेटर्मिनिस्टिक एसक्यूएल-सर्वर फंक्शन्स के विपरीत विहित कार्य हैं और इसलिए इंडेक्सेबल हैं। लेकिन कोई बात नहीं, यह केवल एक स्केलिंग मुद्दा है जब आप परीक्षण में अपनी 3 प्रविष्टियों से लेकर उत्पादन में 1 * 10E6 प्रविष्टियों तक परीक्षण करते हैं, आपको विकास के दौरान कोई समस्या नहीं होती है;)
स्टीफन स्टीगर

8
यदि आप इस क्वेरी को चलाते हैं SELECT {fn curdate()} FROM (SELECT 1) AS T(X)और वास्तविक निष्पादन योजना (xml संस्करण) पर एक नज़र डालते हैं, तो आप देखेंगे कि वास्तव में निष्पादित क्या है CONVERT(varchar(10),getdate(),23)। तो यह ODBC समारोह के डेटाप्रकार है varchar(10)जिसका अर्थ है कि यदि आप एक साथ परिणाम की तुलना करना चाहते datetimeआप से एक अंतर्निहित रूपांतरण मिल जाएगा varchar(10)करने के लिए datetimeएक स्ट्रिंग पर yyyy-mm-dd। यह निहित रूपांतरण के साथ विफल हो जाएगा set dateformat dmy
मिकेल एरिकसन

1
@ मिकेल एरिकसन: एक बग की तरह दिखता है, उन्हें इसके बजाय SELECT CONVERT (char (8), GETDATE (), 112) का उपयोग करना चाहिए।
स्टीफन स्टेगर

"कैनोनिकल फ़ंक्शंस और इसलिए इंडेक्सेबल, नोन्डेटर्मिनिस्टिक एसक्यूएल-सर्वर फ़ंक्शंस के विपरीत" - एर, क्या?
मार्टिन स्मिथ


2

यदि आवश्यक हो तो एक ही डेटाइम रखने के लिए तारीख में परिवर्तित करने के बाद इसे वापस डेटाइम में कनवर्ट करें

select Convert(datetime, Convert(date, getdate())  )


1

उपयोग सरल है:

convert(date, Btch_Time)

नीचे उदाहरण:

तालिका:

Efft_d       Loan_I  Loan_Purp_Type_C   Orig_LTV    Curr_LTV    Schd_LTV    Un_drwn_Bal_a      Btch_Time            Strm_I  Btch_Ins_I
2014-05-31  200312500   HL03             NULL         1.0000    1.0000         1.0000      2014-06-17 11:10:57.330  1005    24851e0a-53983699-14b4-69109


Select * from helios.dbo.CBA_SRD_Loan where Loan_I in ('200312500') and convert(date, Btch_Time) = '2014-06-17'

1

इसके बहुत देर से लेकिन बाद में मेरे लिए अच्छा काम किया

declare @vCurrentDate date=getutcdate()

select @vCurrentDate

जब डेटा का प्रकार तिथि है, तो घंटों को छोटा कर दिया जाएगा


0

PLSQL में आप उपयोग कर सकते हैं

to_char(SYSDATE,'dd/mm/yyyy')

इसे टिप्पणी में स्थानांतरित करने पर विचार करें।
xlembouras

यह प्रश्न SQL सर्वर के बारे में है ... Oracle नहीं
बेन

0

पहले तारीख को फ्लोट में बदलें (जो कि संख्यात्मक प्रदर्शित करता है), फिर ROUNDसंख्यात्मक को 0 दशमलव अंक तक, फिर उसको डेटाइम में परिवर्तित करें।

convert(datetime,round(convert(float,orderdate,101),0) ,101)

0

यदि आप किसी दिनांक प्रकार को केवल दिनांक उपयोग के रूप में वापस करना चाहते हैं

CONVERT(date, SYSDATETIME())

या

SELECT CONVERT(date,SYSDATETIME()) 

या

DECLARE @DateOnly Datetime
SET @DateOnly=CONVERT(date,SYSDATETIME())

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.