Quando seleziono la data in SQL, viene restituita come 2011-02-25 21:17:33.933
. Ma ho bisogno solo della parte Data, cioè 2011-02-25
. Come posso fare questo?
Quando seleziono la data in SQL, viene restituita come 2011-02-25 21:17:33.933
. Ma ho bisogno solo della parte Data, cioè 2011-02-25
. Come posso fare questo?
Risposte:
Immagino che voglia una corda.
select convert(varchar(10), '2011-02-25 21:17:33.933', 120)
120 qui dice la funzione di conversione che passiamo la data di ingresso nel seguente formato : yyyy-mm-dd hh:mi:ss
.
Per SQL Server 2008:
Convert(date, getdate())
Fare riferimento a https://docs.microsoft.com/en-us/sql/t-sql/functions/getdate-transact-sql
DATE
è nuovo nel 2008.
date
tipo di dati che rende questa soluzione non valida.
Il più veloce è datediff
, ad es
select dateadd(d, datediff(d,0, [datecolumn]), 0), other..
from tbl
Ma se hai solo bisogno di usare il valore, puoi saltare il dateadd, ad es
select ...
WHERE somedate <= datediff(d, 0, getdate())
dove l'espressione datediff(d, 0, getdate())
è sufficiente per restituire la data odierna senza porzione di tempo.
Usa CAST (GETDATE () come data) che ha funzionato per me, semplice.
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
Per la versione precedente del 2008 :
SELECT DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0)
È un po 'tardi, ma usa la funzione "curdate" ODBC (le parentesi angolari' fn 'è la sequenza di escape della funzione ODBC).
SELECT {fn curdate()}
Produzione: 2013-02-01
SELECT {fn curdate()} FROM (SELECT 1) AS T(X)
e dai un'occhiata al piano di esecuzione effettivo (versione xml) vedrai che ciò che viene effettivamente eseguito è CONVERT(varchar(10),getdate(),23)
. Così il tipo di dati di questa funzione ODBC è varchar(10)
che significa che se si desidera confrontare il risultato con un datetime
si ottengono una conversione implicita da varchar(10)
a datetime
su una stringa yyyy-mm-dd
. Quella conversione implicita fallirà set dateformat dmy
.
Puoi provare anche questo.
SELECT CONVERT(DATE, GETDATE(), 120)
Nel caso in cui sia necessario il tempo per essere zeri come 2018-01-17 00:00:00.000
:
SELECT CONVERT(DATETIME, CONVERT(DATE, GETDATE()), 121)
L'uso è semplice:
convert(date, Btch_Time)
Esempio sotto:
Tavolo:
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'
È troppo tardi ma il seguito ha funzionato bene per me
declare @vCurrentDate date=getutcdate()
select @vCurrentDate
Quando il tipo di dati è data, le ore verrebbero troncate
In PLSQL puoi usare
to_char(SYSDATE,'dd/mm/yyyy')
Prima converti la data in virgola mobile (che mostra il valore numerico), quindi ROUND
il numerico in 0 punti decimali, quindi convertilo in datetime.
convert(datetime,round(convert(float,orderdate,101),0) ,101)
Prova questo.
SELECT DATEADD(DD, 0, DATEDIFF(DD, 0, GETDATE()))