SQL'de tarih seçtiğimde, olarak döndürülür 2011-02-25 21:17:33.933
. Ama sadece Tarih bölümüne ihtiyacım var 2011-02-25
. Bunu nasıl yapabilirim?
SQL'de tarih seçtiğimde, olarak döndürülür 2011-02-25 21:17:33.933
. Ama sadece Tarih bölümüne ihtiyacım var 2011-02-25
. Bunu nasıl yapabilirim?
Yanıtlar:
Sanırım bir ip istiyor.
select convert(varchar(10), '2011-02-25 21:17:33.933', 120)
120 burada giriş tarihini geçmesi olduğunu dönüştürme işlevini anlatır aşağıdaki biçimde : yyyy-mm-dd hh:mi:ss
.
SQL Server 2008 için:
Convert(date, getdate())
Lütfen https://docs.microsoft.com/tr-tr/sql/t-sql/functions/getdate-transact-sql adresine bakın.
DATE
2008 yılında yeni
date
veri türüne sahip değildir, bu nedenle bu çözümü geçersiz kılar.
En hızlısı datediff
, ör.
select dateadd(d, datediff(d,0, [datecolumn]), 0), other..
from tbl
Ancak yalnızca değeri kullanmanız gerekiyorsa, dateadd'i atlayabilirsiniz, örn.
select ...
WHERE somedate <= datediff(d, 0, getdate())
Burada ifade datediff(d, 0, getdate())
, günün tarihini zaman bölümü olmadan döndürmek için yeterlidir.
Benim için işe yarayan CAST (GETDATE ()) tarihini kullanın, basit.
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
İçin 2008 eski sürümü :
SELECT DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0)
Biraz geç oldu, ancak ODBC "curdate" işlevini kullanın (köşeli parantez 'fn' ODBC işlevi kaçış dizisidir).
SELECT {fn curdate()}
Çıktı: 2013-02-01
SELECT {fn curdate()} FROM (SELECT 1) AS T(X)
ve gerçek yürütme planına (xml sürümü) bir göz atarsanız, gerçekte yürütülen şeyin olduğunu görürsünüz CONVERT(varchar(10),getdate(),23)
. Bu ODBC fonksiyonunun veri türüdür Yani varchar(10)
bir ile karşılaştırmak istiyorsanız o hangi vasıta datetime
sen bir örtük dönüştürme alacak varchar(10)
için datetime
bir ipe yyyy-mm-dd
. Örtük dönüşüm başarısız olur set dateformat dmy
.
Bunu da deneyebilirsiniz.
SELECT CONVERT(DATE, GETDATE(), 120)
Sıfır olmak için zamana ihtiyacınız varsa 2018-01-17 00:00:00.000
:
SELECT CONVERT(DATETIME, CONVERT(DATE, GETDATE()), 121)
Kullanımı basit:
convert(date, Btch_Time)
Aşağıdaki örnek:
Tablo:
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'
Çok geç ama takip etmek benim için iyi çalıştı
declare @vCurrentDate date=getutcdate()
select @vCurrentDate
Veri türü tarih olduğunda saatler kısaltılır
PLSQL'de şunları kullanabilirsiniz:
to_char(SYSDATE,'dd/mm/yyyy')
Önce tarihi kayan ROUND
sayıya dönüştürün (sayısal değeri görüntüler), ardından sayısal değeri 0 ondalık basamağa dönüştürün, sonra da tarihi datime dönüştürün.
convert(datetime,round(convert(float,orderdate,101),0) ,101)
Bunu dene.
SELECT DATEADD(DD, 0, DATEDIFF(DD, 0, GETDATE()))