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
DATE
ist neu in 2008.
date
Datentyp, sodass diese Lösung ungültig wird.
Das schnellste ist datediff
z
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 datetime
in 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 ROUND
Zahl 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()))