Wenn ich in SQL ein Datum auswähle, wird es als zurückgegeben 2011-02-25 21:17:33.933. Aber ich brauche nur den Datumsteil, das heißt 2011-02-25. Wie kann ich das machen?
Wenn ich in SQL ein Datum auswähle, wird es als zurückgegeben 2011-02-25 21:17:33.933. Aber ich brauche nur den Datumsteil, das heißt 2011-02-25. Wie kann ich das machen?
Antworten:
Ich denke, er will eine Schnur.
select convert(varchar(10), '2011-02-25 21:17:33.933', 120)
120 teilt hier der Konvertierungsfunktion mit, dass wir das Eingabedatum im folgenden Format übergeben : yyyy-mm-dd hh:mi:ss.
Für SQL Server 2008:
Convert(date, getdate())
Weitere Informationen finden Sie unter https://docs.microsoft.com/en-us/sql/t-sql/functions/getdate-transact-sql
DATEist neu in 2008.
dateDatentyp, sodass diese Lösung ungültig wird.
Das schnellste ist datediffz
select dateadd(d, datediff(d,0, [datecolumn]), 0), other..
from tbl
Wenn Sie jedoch nur den Wert verwenden müssen, können Sie das Datum überspringen, z
select ...
WHERE somedate <= datediff(d, 0, getdate())
wobei der Ausdruck datediff(d, 0, getdate())ausreicht, um das heutige Datum ohne Zeitanteil zurückzugeben.
Verwenden Sie CAST (GETDATE () als Datum), das für mich einfach funktioniert hat.
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
Für 2008 ältere Version :
SELECT DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0)
Es ist etwas spät, aber verwenden Sie die ODBC-Funktion "curdate" (spitze Klammern 'fn' ist die Escape-Sequenz der ODBC-Funktion).
SELECT {fn curdate()}
Ausgabe: 2013-02-01
SELECT {fn curdate()} FROM (SELECT 1) AS T(X)und sich den tatsächlichen Ausführungsplan (XML-Version) ansehen, werden Sie feststellen, dass tatsächlich ausgeführt wird CONVERT(varchar(10),getdate(),23). Der Datentyp dieser ODBC-Funktion ist varchar(10)also, dass Sie, wenn Sie das Ergebnis mit einem vergleichen möchten datetime, eine implizite Konvertierung von varchar(10)zu datetimein eine Zeichenfolge erhalten yyyy-mm-dd. Diese implizite Konvertierung schlägt mit fehl set dateformat dmy.
Sie können diesen auch versuchen.
SELECT CONVERT(DATE, GETDATE(), 120)
Für den Fall, dass Sie die Zeit brauchen, um Nullen zu sein, wie 2018-01-17 00:00:00.000:
SELECT CONVERT(DATETIME, CONVERT(DATE, GETDATE()), 121)
Die Verwendung ist einfach:
convert(date, Btch_Time)
Beispiel unten:
Tabelle:
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'
Es ist zu spät, aber das Folgen hat bei mir gut funktioniert
declare @vCurrentDate date=getutcdate()
select @vCurrentDate
Wenn der Datentyp Datum ist, werden die Stunden abgeschnitten
In PLSQL können Sie verwenden
to_char(SYSDATE,'dd/mm/yyyy')
Konvertieren Sie zuerst das Datum in Gleitkomma (das die ROUNDZahl anzeigt), dann die Zahl in 0 Dezimalstellen und konvertieren Sie diese dann in Datum / Uhrzeit.
convert(datetime,round(convert(float,orderdate,101),0) ,101)
Versuche dies.
SELECT DATEADD(DD, 0, DATEDIFF(DD, 0, GETDATE()))