我如何在sql server中按特定日期检索行?

时间:2011-04-10 11:57:07

标签: sql sql-server tsql date

我正在使用PHP和SQL Server进行项目。

店主希望我设计页面只显示在同一天注册的用户

即,如果今天11-3-2011我只想显示所有在11-3-2011注册的用户

表格是:

id  username  date

1   john      11\3\2011
2   sara      11\3\2011
3   john      5\1\2011
4   kreem     1\2\2011

我是通过mysql制作的

where DATE_ADD( items.created_date, INTERVAL 1 DAY ) > NOW() 

此代码电缆显示的数据仅在同一天插入,这意味着如果今天10-4-2011它将仅显示插入10-4-2011的数据,如果我今天15-4-2011并且im剂量不插入什么东西它不会显示任何东西,我如何在sql server中构建这样的代码?希望我的问题清楚明白

6 个答案:

答案 0 :(得分:5)

select id, userName
from YourTable
where CAST(date AS DATE) = CAST(GETDATE() AS DATE)

函数GETDATE()返回当前日期和时间。

CAST(column as TYPE)会将DateTime威胁为日期以省略时间差异

答案 1 :(得分:5)

获取今天的日期记录:

select * from tablename where date column between '2011-10-25 00:00:00' And '2011-10-25 23:59:59'

答案 2 :(得分:2)

select * from yourtable where date = CONVERT(VARCHAR(20),GETDATE(),101) //希望这对获取当前日期值有所帮助..

答案 3 :(得分:1)

此查询仅比较今天的日期部分,忽略时间。它适用于MS SQL Server,我不确定其他实现:

select *
from YourTable
where convert(datetime, floor(convert(float, GETDATE()))) = [date]

答案 4 :(得分:0)

select *
from YourTable
where
  [date] >= '20110311' and
  [date] < '20110312'

如果你今天想要(总是),你可以使用这个

select *
from YourTable
where
  [date] >= dateadd(d, datediff(d, 0, getdate()), 0) and
  [date] < dateadd(d, datediff(d, 0, getdate())+1, 0)

过去10天。

select *
from YourTable
where
  [date] >= dateadd(d, datediff(d, 0, getdate())-9, 0)

编辑1 查询样本数据和结果

表格定义

create table users
  (name varchar(20),
   user_register_date datetime)

数据

insert into users values ('user today', getdate())
insert into users values ('user yesterday', getdate()-1)
insert into users values ('user 9 days ago', getdate()-9)
insert into users values ('user 10 days ago', getdate()-10)

查询

select *
from users
where user_register_date >= dateadd(d, datediff(d, 0, getdate())-9, 0)

结果

name                 user_register_date
-------------------- -----------------------
user today           2011-04-14 08:29:28.407
user yesterday       2011-04-13 08:29:28.410
user 9 days ago      2011-04-05 08:29:28.410

答案 5 :(得分:0)

SELECT * from YourTable
WHERE cast(convert(varchar(10),yourdate,101) as datetime) = 
cast(convert(varchar(10),[any day you want],101) as datetime)

希望这会有所帮助。只需用日期或日期时间值替换[您想要的任何一天]

CAST函数等效于CONVERT函数,但convert允许一些格式化选项。在我的例子中,我只是缩短了约会的时间。