日期:2014-05-18  浏览次数:20607 次

根据时间查询数据
数据库表A有时间字段

  id start_time name
  1 03 30 2012 4:37AM 1
  2 03 30 2012 8:37PM 2
  3 03 31 2012 4:37AM 3
  4 03 31 2012 6:37PM 4
  5 04 01 2012 4:37AM 5
  6 04 01 2012 8:37PM 6
  7 04 01 2012 9:37PM 7

在3月31号凌晨查询出3月30号的数据
在4月1号凌晨查询出3月31号的数据
在4月2号凌晨查询出4月1号的数据

怎么用1条sql语句写出来? 凌晨的时候 我只要执行这语句 就能查询出前一天的数据了

------解决方案--------------------
SQL code

  SELECT * FROM 表A
  WHERE CONVERT(VARCHAR(10),DATEADD(DAY,-1,GETDATE()),23) = CONVERT(VARCHAR(10),start_time,23)

------解决方案--------------------
探讨
引用:
SQL code

select * from a where convert(varchar(10),start_time,120)=dateadd(day,-1,convert(varchar(10),getdate(),120))

请问为什么要加上convert(varchar(10),start_time,120)这句话
dateadd(day,-1,……

------解决方案--------------------
SQL code

select [id], [start_time],[name]
 from tbl
 where DATEDIFF(DD,convert(varchar(10),[start_time],120),GETDATE())=1

--直接这样就好了