In SQL Server, wie kann ich Daten vergleichen? Zum Beispiel:Wie verwende ich Select with date?
Select * von Benutzern, wo RegistrationDate> = '1/20/2009'
(RegistrationDate Datetime-Typ ist)
Dank
In SQL Server, wie kann ich Daten vergleichen? Zum Beispiel:Wie verwende ich Select with date?
Select * von Benutzern, wo RegistrationDate> = '1/20/2009'
(RegistrationDate Datetime-Typ ist)
Dank
Wenn Sie in
setzenSELECT * FROM Users WHERE RegistrationDate >= '1/20/2009'
wird die Zeichenfolge '1/20/2009'
automatisch in das Format DateTime
für ein Datum vonkonvertiert. Wenn Sie also >=
verwenden, sollten Sie jeden Benutzer erhalten, dessen Registrierungsdatum der 20.01.2009 oder jünger ist.
Edit: Ich habe dies in den Kommentar-Abschnitt, aber ich sollte wahrscheinlich auch hier verlinken. Dies ist ein Artikel einige mehr in die Tiefe Arbeitsweisen mit Datetime ist in Ihnen abfragt Detaillierung: http://www.databasejournal.com/features/mssql/article.php/2209321/Working-with-SQL-Server-DateTime-Variables-Part-Three---Searching-for-Particular-Date-Values-and-Ranges.htm
Select * from Users where RegistrationDate >= CONVERT(datetime, '01/20/2009', 103)
sicher zu verwenden ist, unabhängig von den Datumseinstellungen auf dem Server.
Die vollständige Liste der Stile finden Sie here.
ich den Filter Datum in ein Datetime immer bekommen, ohne Zeit (Zeit = 00: 00: 00,000)
DECLARE @FilterDate datetime --final destination, will not have any time on it
DECLARE @GivenDateD datetime --if you're given a datetime
DECLARE @GivenDateS char(23) --if you're given a string, it can be any valid date format, not just the yyyy/mm/dd hh:mm:ss.mmm that I'm using
SET @GivenDateD='2009/03/30 13:42:50.123'
SET @GivenDateS='2009/03/30 13:42:50.123'
--remove the time and assign it to the datetime
@FilterDate=dateadd(dd, datediff(dd, 0, @FilterDateD), 0)
--OR
@FilterDate=dateadd(dd, datediff(dd, 0, @FilterDateS), 0)
Sie können diese WHERE-Klausel verwenden, um dann zu filtern:
WHERE ColumnDateTime>[email protected] AND ColumnDateTime<@FilterDate+1
Dies gibt alle Spiele, die am oder nach dem Beginn des Tages am 30.03.2009 sind, bis einschließlich des kompletten Tages am 30.03.2009
Sie können das gleiche für START und END Filterparameter wie Gut. Geben Sie für das Startdatum immer ein Datum und an dem gewünschten Tag die Nullzeit ein, und geben Sie die Bedingung "> =" an. Geben Sie immer das Enddatum die Nullzeit am nächsten Tag ein und verwenden Sie "<". Auf diese Weise werden Sie immer alle Daten korrekt angeben, unabhängig von der Zeit des Datums.
Ein weiteres Merkmal ist zwischen:
Select * from table where date between '2009/01/30' and '2009/03/30'
, wenn Sie durch das Datumsformat gestört werden nicht wollen, können Sie die Spalte mit dem allgemeinen Datumsformat vergleichen könnten zum Beispiel
select * From table where cast (RegistrationDate as date) between '20161201' and '20161220'
Stellen Sie sicher, dass das Datum im Format DATE ist, andernfalls cast (col as DATE)
select sysdate from dual
30-MAR-17
select count(1) from masterdata where to_date(inactive_from_date,'DD-MON-YY'
between '01-JAN-16' to '31-DEC-16'
12998 rows
vielen Dank "Pang" für die Bearbeitung meines Kommentars, –
Weitere Informationen zu DateTime-Datentypen und SQL Server-Abfragen finden Sie hier: http://www.databasejournal.com/features/mssql/article.php/2209321/Working-with-SQL-Server-DateTime-Variables -Part-Three --- Suche nach-Datum-Werte-und-Ranges.htm – TheTXI