sql >> Databasteknik >  >> RDS >> Sqlserver

Hur frågar jag DATETIME-fältet med endast datum i Microsoft SQL Server?

använd intervall eller DateDiff-funktionen

 select * from test 
 where date between '03/19/2014' and '03/19/2014 23:59:59'

eller

 select * from test 
 where datediff(day, date, '03/19/2014') = 0

Andra alternativ är:

  1. Om du har kontroll över databasschemat och du inte behöver tidsdata, ta bort det.

  2. eller, om du måste behålla det, lägg till ett beräknat kolumnattribut som har tidsdelen av datumvärdet borttagen...

Alter table Test Add DateOnly As DateAdd(day, datediff(day, 0, date), 0)

eller, i nyare versioner av SQL Server...

Alter table Test Add DateOnly As Cast(DateAdd(day, datediff(day, 0, date), 0) as Date)

sedan kan du skriva din fråga som helt enkelt:

select * from test 
where DateOnly = '03/19/2014'


  1. Ingen anslutning kunde göras eftersom målmaskinen aktivt vägrade det (PHP / WAMP)

  2. Hur man uppgraderar PostgreSQL10 till PostgreSQL11 med noll driftstopp

  3. Hur man lägger till antal arbetsdagar till ett visst datum

  4. Varför använda INCLUDE-satsen när du skapar ett index?