जब मैं एसक्यूएल में तारीख का चयन करता हूं तो इसे वापस कर दिया जाता है 2011-02-25 21:17:33.933
। लेकिन मुझे केवल तारीख का हिस्सा चाहिए, वह है 2011-02-25
। मैं यह कैसे कर सकता हूँ?
जब मैं एसक्यूएल में तारीख का चयन करता हूं तो इसे वापस कर दिया जाता है 2011-02-25 21:17:33.933
। लेकिन मुझे केवल तारीख का हिस्सा चाहिए, वह है 2011-02-25
। मैं यह कैसे कर सकता हूँ?
जवाबों:
मुझे लगता है कि वह एक तार चाहता है।
select convert(varchar(10), '2011-02-25 21:17:33.933', 120)
120 यहाँ परिवर्तित समारोह है कि हम में इनपुट तारीख पारित बताता निम्न स्वरूप : yyyy-mm-dd hh:mi:ss
।
SQL Server 2008 के लिए:
Convert(date, getdate())
कृपया https://docs.microsoft.com/en-us/sql/t-sql/functions/getdate-transact-sql देखें
DATE
2008 में नया है।
date
डेटा-प्रकार नहीं है इसलिए इस समाधान को अमान्य करार दिया गया है।
सबसे तेज़ है datediff
, जैसे;
select dateadd(d, datediff(d,0, [datecolumn]), 0), other..
from tbl
लेकिन अगर आपको केवल मूल्य का उपयोग करने की आवश्यकता है, तो आप डेटाड को छोड़ सकते हैं, जैसे
select ...
WHERE somedate <= datediff(d, 0, getdate())
जहाँ अभिव्यक्ति datediff(d, 0, getdate())
बिना समय के भाग के आज की तारीख को लौटाने के लिए पर्याप्त है।
CAST (GETDATE () तारीख के रूप में) का प्रयोग करें, जो मेरे लिए सरल है।
CAST(order_date AS DATE)
CAST(
FLOOR(
CAST( GETDATE() AS FLOAT )
)
AS DATETIME
)
http://www.bennadel.com/blog/122-Getting-Only-the-Date-Part-of-a-Date-Time-Stamp-in-SQL-Server.htm
के लिए 2008 पुराने संस्करण :
SELECT DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0)
यह थोड़ा देर से है, लेकिन ODBC "दही" फ़ंक्शन का उपयोग करें (कोण ब्रैक्स 'fn' ODBC फ़ंक्शन एस्केप अनुक्रम है)।
SELECT {fn curdate()}
आउटपुट: 2013-02-01
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
।
आप इसे भी आजमा सकते हैं।
SELECT CONVERT(DATE, GETDATE(), 120)
मामले में अगर आपको शून्य होने की आवश्यकता है जैसे 2018-01-17 00:00:00.000
:
SELECT CONVERT(DATETIME, CONVERT(DATE, GETDATE()), 121)
उपयोग सरल है:
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'
इसके बहुत देर से लेकिन बाद में मेरे लिए अच्छा काम किया
declare @vCurrentDate date=getutcdate()
select @vCurrentDate
जब डेटा का प्रकार तिथि है, तो घंटों को छोटा कर दिया जाएगा
PLSQL में आप उपयोग कर सकते हैं
to_char(SYSDATE,'dd/mm/yyyy')
पहले तारीख को फ्लोट में बदलें (जो कि संख्यात्मक प्रदर्शित करता है), फिर ROUND
संख्यात्मक को 0 दशमलव अंक तक, फिर उसको डेटाइम में परिवर्तित करें।
convert(datetime,round(convert(float,orderdate,101),0) ,101)
यदि आप किसी दिनांक प्रकार को केवल दिनांक उपयोग के रूप में वापस करना चाहते हैं
CONVERT(date, SYSDATETIME())
या
SELECT CONVERT(date,SYSDATETIME())
या
DECLARE @DateOnly Datetime
SET @DateOnly=CONVERT(date,SYSDATETIME())
इसे इस्तेमाल करे।
SELECT DATEADD(DD, 0, DATEDIFF(DD, 0, GETDATE()))