Odpowiedzi:
Chyba chce sznurka.
select convert(varchar(10), '2011-02-25 21:17:33.933', 120)
120 tu mówi funkcję konwersji, które przekroczyły datę wejścia w następującym formacie : yyyy-mm-dd hh:mi:ss.
W przypadku SQL Server 2008:
Convert(date, getdate())
Zapoznaj się z https://docs.microsoft.com/en-us/sql/t-sql/functions/getdate-transact-sql
DATEjest nowy w 2008 roku.
datedanych, dlatego renderowanie tego rozwiązania jest nieprawidłowe.
Najszybszy jest datediffnp
select dateadd(d, datediff(d,0, [datecolumn]), 0), other..
from tbl
Ale jeśli potrzebujesz tylko użyć wartości, możesz pominąć dateadd, np
select ...
WHERE somedate <= datediff(d, 0, getdate())
gdzie wyrażenie datediff(d, 0, getdate())jest wystarczające, aby zwrócić dzisiejszą datę bez części czasu.
Użyj CAST (GETDATE () jako daty), który zadziałał dla mnie, proste.
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
W przypadku starszej wersji 2008 :
SELECT DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0)
Jest trochę późno, ale użyj funkcji „curdate” ODBC (nawiasy kątowe „fn” to sekwencja ucieczki funkcji ODBC).
SELECT {fn curdate()}
Wynik: 2013-02-01
SELECT {fn curdate()} FROM (SELECT 1) AS T(X)i spojrzysz na rzeczywisty plan wykonania (wersja xml), zobaczysz, że to, co jest faktycznie wykonane, jest CONVERT(varchar(10),getdate(),23). Tak typ danych tej funkcji ODBC jest varchar(10)co oznacza, że jeśli chcesz porównać wynik z datetimedostaniesz niejawna konwersja z varchar(10)celu datetimena sznurkuyyyy-mm-dd . Ta niejawna konwersja zakończy się niepowodzeniem set dateformat dmy.
Możesz też spróbować tego.
SELECT CONVERT(DATE, GETDATE(), 120)
Jeśli potrzebujesz czasu na zera, takie jak 2018-01-17 00:00:00.000:
SELECT CONVERT(DATETIME, CONVERT(DATE, GETDATE()), 121)
Użycie jest proste:
convert(date, Btch_Time)
Przykład poniżej:
Stół:
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'
Jest już za późno, ale obserwowanie mnie zadziałało
declare @vCurrentDate date=getutcdate()
select @vCurrentDate
Gdy typem danych jest data, godziny zostaną obcięte
W PLSQL możesz używać
to_char(SYSDATE,'dd/mm/yyyy')
Najpierw przekonwertuj datę na liczbę zmiennoprzecinkową (która wyświetla wartość liczbową), następnie ROUNDliczbę na 0 miejsc po przecinku, a następnie przekonwertuj ją na datę i godzinę .
convert(datetime,round(convert(float,orderdate,101),0) ,101)
Spróbuj tego.
SELECT DATEADD(DD, 0, DATEDIFF(DD, 0, GETDATE()))