Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Holen Sie sich eine Zeile, in der datetime-Spalte =heute ist - SQL Server-Noob

Auf SQL Server 2008 hätten Sie ein neues DATE Datentyp, den Sie verwenden könnten, um dies zu erreichen:

SELECT (list of fields)
FROM dbo.YourTable
WHERE dateValue BETWEEN 
   CAST(GETDATE() AS DATE) AND DATEADD(DAY, 1, CAST(GETDATE() AS DATE))

Der CAST(GETDATE() AS DATE) wandelt das aktuelle Datum und die Uhrzeit in einen Nur-Datum-Wert um, z. Geben Sie '2010-04-06' für den 6. April 2010 zurück. Wenn Sie dazu einen Tag hinzufügen, werden im Grunde alle datetime-Werte von heute ausgewählt.

In SQL Server 2005 gibt es keinen einfachen Weg, dies zu tun - die eleganteste Lösung, die ich hier gefunden habe, ist die Verwendung einer numerischen Manipulation von DATETIME, um dasselbe Ergebnis zu erzielen:

SELECT (list of fields)
FROM dbo.YourTable
WHERE dateValue BETWEEN 
   CAST(FLOOR(CAST(GETDATE() AS FLOAT)) AS DATETIME) AND 
   DATEADD(DAY, 1, CAST(FLOOR(CAST(GETDATE() AS FLOAT)) AS DATETIME))