2012-10-22 58 views
0

我正在嘗試編寫存儲過程以獲取當前日期的記錄,但我無法這樣做。我創建了一個用於最新的記錄顯示,並嘗試對其進行修改。需要幫助來獲取當前日期的記錄?

下面是代碼:

SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
CREATE PROCEDURE [dbo].[SP_SELECTTODAYRECORDS_Test] 
AS 
BEGIN 
    SELECT col_Source as 'country', 
    col_FirstName +' '+col_LastName as 'name', 
    description as 'state' , 
    col_county 
    from tbl_Info_Test, tbl_CountySite 
    where col_Pic is not null 
    and col_Source = sourcecountry 
    and ISDATE(col_BookDate) = 1 
    order by CONVERT(datetime, col_BookDate) DESC 
END 
+0

爲什麼會有人認爲前綴(實際上)每個列與'col_'是一個好主意?同樣,'tbl_'和(最差)'sp_'。 'sp_'是由Microsoft定義的系統存儲過程的前綴保留。但是,作爲一個快速測驗,除列以外的'SELECT'子句中,what * else *可以作爲一個簡單的名字出現(即不是後跟'()')? –

+0

@Damien_The_Unbeliever我同意。但是...別名,@@函數,$標識, – podiluska

+0

@podiluska - 要麼別名是......列的別名,要麼它不是一個簡單的名稱(例如'()'表示函數調用,或者如您所說'@@'等) - 您可以隨時查看「SELECT」列表中的每個項目,然後計算出「thing」的* type *,而不需要「col_」前綴。 –

回答

1

如果你想獲得彙報今天的日期,那麼你可以使用轉換函數GETDATE()。

如果您在SP中添加以下條件,它會爲當天日期的col_BookDate提供記錄。

CONVERT(VARCHAR(10),col_BookDate,101)=CONVERT(VARCHAR(10),GETDATE(),101) 
+0

誰低估了,你能解釋一下嗎? –

+0

VARCHAR轉換並不是最有效的方法,但這是一種有效的方法。我沒有看到降低投票的理由,所以我會積極投票。 –

1

日期字段組合日期和時間信息。要選擇當前日期的記錄,您必須省略時間部分。一種方法是從現場刪除時間部分。請參閱以下鏈接:

Most efficient way in SQL Server to get date from date+time?

另一種方法是選擇當前日期開始之間的所有記錄(00:00)和第二天的開始:

... WHERE DateField >= @Date AND DateField < DATEADD(d, 1, @Date)