2011-04-10 69 views
4

我在PHP和SQL Server的項目中工作。我如何檢索SQL Server中特定日期的行?

所有者想從我設計的頁面只顯示在誰當日

即註冊用戶,如果今天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() 

該電纜代碼笑的使w只在同一天插入的數據這意味着如果今天10-4-2011它將只顯示在10-4-2011插入的數據,如果我今天15-4-2011和im不插入任何東西它不會顯示任何東西事情,我如何在sql server中構建這樣的代碼?希望能清楚我的問題,並瞭解

+3

什麼版本的SQL Server? 「日期」列是什麼數據類型?它是否有任何時間組件? – 2011-04-10 11:58:37

+0

我使用sql server 2002 .... thx尋求幫助,但那不是我需要我通過mysql做到的,但可以通過mssql來完成此代碼'DATE_ADD(items.created_date,INTERVAL 1 DAY)> NOW()'這是在相同日期當天插入的mysql代碼顯示數據 – user700792 2011-04-10 16:44:55

+0

@user - 沒有SQL Server 2002.選項爲2000,2005,2008。你還沒有回答我的其他問題。 – 2011-04-10 17:06:50

回答

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 
+0

@Mikael埃裏克森:我想他想要有一個功能每天工作,不僅在指定的一天... – Marco 2011-04-10 12:16:29

+0

oky如果我想從10天插入最後一次? – user700792 2011-04-10 16:38:58

+0

是Mikael Eriksson我需要功能自動運行,就像之前說的那樣 – user700792 2011-04-10 16:53:22

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

功能GETDATE()返回當前的日期和時間。

CAST(column as TYPE)意志威脅的DateTime剛剛日期省略在時間

+0

這將在SQL Server 2008或更高版本中工作我猜CAST(date AS DATE)'會產生一個索引上'date'沒有用,如果它不是數據類型'DATE'但是不需要轉換。 – 2011-04-10 12:30:08

+0

@Mikael:在這種情況下,計算值的索引是否合理? – abatishchev 2011-04-10 12:59:00

+1

@Mikael - 在日期**上投射** **是可控制的。請參閱http://connect.microsoft.com/SQLServer/feedback/details/526431/make-more-functions-sargable顯然不可能告訴如何適用於沒有附加信息的OP。 – 2011-04-10 13:11:30

1

差異這個查詢比較只有日期一塊的今天,忽視了時間。它工作在MS SQL Server中,我不知道其他implimentations:

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

如果你只能'CAST(GETDATE()as Date)'得到只有日期部分和省略時間部分的那麼多操作麼? – abatishchev 2011-04-10 12:24:11

+0

我想我從http://leftlobed.wordpress.com/學到了一個壞習慣2008/05/03/archive-getting-the-date-part-of-a-datetime-type-in​​-sql-t-sql-use-floats-and-floor/and http://www.stillnetstudios.com /比較日期無時間在SQL服務器/ – BlueMonkMN 2011-04-10 12:40:10

+0

我看到有很多[變種](http://blog.sqlauthority.com/2007/06/10/sql-server-retrieve-select -only-date-part-from-datetime-best-practice /) – abatishchev 2011-04-10 12:58:08

5

爲了得到今天的最新紀錄:

select * from tablename where date column between '2011-10-25 00:00:00' And '2011-10-25 23:59:59' 
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函數允許使用某些格式化選項。在我的例子中,我簡單地減少了從日期開始的時間。

2

select * from yourtable where date = CONVERT(VARCHAR(20),GETDATE(),101) //希望這會有助於獲取當前日期值。

相關問題