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

如何在sql server中按特定日期检索行?,sql,sql-server,tsql,date,Sql,Sql Server,Tsql,Date,我在PHP和SQL Server的项目中工作 owner want from me设计页面仅显示当天注册的用户 i、 例如,如果今天是2011年11月3日,我只想显示2011年11月3日注册的所有用户 表格如下: 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( it

我在PHP和SQL Server的项目中工作

owner want from me设计页面仅显示当天注册的用户

i、 例如,如果今天是2011年11月3日,我只想显示2011年11月3日注册的所有用户

表格如下:

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() 
这段代码线显示的数据只在同一天插入,这意味着如果今天是2011年4月10日,它将只显示2011年4月10日插入的数据如果我今天是2011年4月15日,im没有插入任何内容,它将不会显示任何内容,我如何在sql server中构建这样的代码?希望我的问题清楚明白

select *
from YourTable
where
  [date] >= '20110311' and
  [date] < '20110312'
编辑1查询样本数据和结果

表定义

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

质疑

结果

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
函数返回当前日期和时间


将DateTime设置为just Date以忽略时间差异

此查询仅比较今天的日期,忽略时间。它在MS SQL Server中工作,我不确定其他实现:

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

要获取今天的日期记录,请执行以下操作:

select * from tablename where date column between '2011-10-25 00:00:00' And '2011-10-25 23:59:59'
希望这有帮助。只需将[您想要的任何一天]替换为日期或日期时间值即可



CAST函数与CONVERT函数等效,只是CONVERT允许一些格式选项。在我的示例中,我只是从日期中删除了时间。

从表中选择*其中date=CONVERT(VARCHAR(20),GETDATE(),101)//希望这对获取当前日期值有所帮助。

什么版本的SQL Server?
date
列的数据类型是什么?它有任何时间组件吗?我使用sql server 2002…thx寻求帮助,但这不是我需要的我用mysql制作,但可以用mssql完成查看此代码
DATE\u添加(items.created\u DATE,INTERVAL 1 DAY)>NOW()
这是mysql代码显示在同一天插入的数据,具有相同的date@user-没有SQL Server 2002。选项为200020052008。你也没有回答我的其他问题。请看看这些回答:@Mikael Eriksson:我想他希望有一个函数每天都工作,而不仅仅是在指定的一天……是的,Mikael Eriksson我需要函数自动运行,比如说在[日期]之前是什么?是那个函数,后面是什么(你是说列名?@user–[Date]是表中名为Date的字段。由于Date也是一种数据类型,您可以使用括号对您的意思不产生任何疑问。
d
是dateadd和datediff的一个参数,指定函数应与天一起工作。抱歉,我无法获取它……。让我告诉您,我有表名用户和包含日期的列name user\u register\u date我应该这样做=>
从user\u register\u date>=dateadd(d,datediff(d,0,getdate())-9,0)的用户中选择*
?如果我有错误,请修复它,当您可以
将(getdate()转换为date)时,为什么要执行这么多操作
若要仅获取日期部分而忽略时间部分,我想我从中学到了一个不好的做法,并且在进一步检查后发现有很多错误,我怀疑您的版本仅适用于SQL 2008,并且许多应用程序仍希望与SQL Server 2005兼容。这将在SQL Server 2008或更高版本中起作用。我想
强制转换(日期为日期)
将使
date
上的索引无效,如果它还不是数据类型
date
,那么强制转换是不必要的。@Mikael:在这种情况下,计算值上的索引有意义吗?@Mikael-在
date
上的强制转换是可搜索的。如果没有额外的信息,显然无法判断这对OP有多合适“@Martin–这很好,在处理datetime时会更轻松。@abatishchev–计算值上不需要索引。我不知道将datetime转换为date是可以接受的。
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
select id, userName
from YourTable
where CAST(date AS DATE) = CAST(GETDATE() AS DATE)
select *
from YourTable
where convert(datetime, floor(convert(float, GETDATE()))) = [date]
select * from tablename where date column between '2011-10-25 00:00:00' And '2011-10-25 23:59:59'
SELECT * from YourTable
WHERE cast(convert(varchar(10),yourdate,101) as datetime) = 
cast(convert(varchar(10),[any day you want],101) as datetime)