2011-11-04 45 views
3

在SqlDataSource的日期,我已經指定檢索日期的SelectCommand:提取只能從DateTime列asp.net

SelectCommand="SELECT [training_id], Convert(varchar(14),[trainingDate],101) FROM [tbl_training]" 

然而DateGenerated讓我像11/04/2011 12:00值: 00 AM。如何使用SelectCommand僅提取11/25/2011?

任何幫助,將不勝感激。

+0

SqlServer的哪個版本? (是否是Sql Server?) – sll

+0

是的SQL服務器2008 – user959443

+0

在這種情況下,您可以將dateTime轉換爲內置的Sql Server的'日期'類型,看到我的答案 – sll

回答

2

不指定大小,儘量

Convert(varchar,[trainingDate],101) 

如果你到SQL Server上運行這個今天你會得到:

Declare @datey datetime 
Set @datey = GETDATE() 
Select CONVERT(varchar, @datey, 101) as [DateOnly] 

結果: 11/04/2011

其值得注意的是,在SQL Server Denali中,所有這些用於格式化的幻數都將消失,新的FORMAT()函數

+0

DataBinding:'System.Data.DataRowView'不包含名爲'trainingDate'的屬性 – user959443

+0

格式'111'會在這裏更好,我想。 –

+0

@ user959443您需要在查詢中指定選擇轉換(varchar,[trainingDate],101)作爲trainingDate。 – kd7

1

如果你打算在asp網格中顯示它,你可以在boundfield上做到這一點。

<asp:BoundField DataField="datafield" HeaderText="displayText" DataFormatString="{0:MM/dd/yyyy}" HtmlEncode="false"/> 

,但如果你想在選擇查詢

Select convert(varchar,trainingDate, 101) as trainingDate 
+0

我只需要綁定到下拉列表中的值從SQL Server日期時間列但不想要小時兩個顯示 – user959443

1

要獲得唯一的日期部分,你可以這樣做:

DateTime dt = DateTime.Now; 
dt = dt.Date; 

如果你顯示日期,您可以使用MM/dd/yyyy格式。如果您只想從SQL Server返回日期部分,請使用格式111而不是101

0

在SQL Server 2008的情況下,你可以投建在date type

CAST(trainingDate as DATE) 

最終查詢:

SELECT training_id, CAST(trainingDate as DATE) 
FROM tbl_training 
+0

錯誤[42000] [Microsoft] [ODBC SQL Server驅動程序] [SQL Server]類型DATE不是定義的系統類型。 – user959443

+0

@ user959443:你確定服務器的版本是2008嗎? – sll

3

取出作爲值DateTime總是包括一個時間,因爲這就是類型的定義。您可以:

  • 使用Date屬性確保你在午夜DateTime值(例如,對於平等計算)
  • 格式化用戶時忽略了時間的一部分。要將DateTime格式化爲僅以文化敏感的方式顯示日期,則應使用「d」或「D」standard date/time format specifier。請勿硬編碼自定義日期/時間格式字符串,除非您確定這是您的用戶所期望的。 (2011年11月4日看起來像4月11日,以我來說吧...)

怎麼回事你想使用的值?雖然我認爲這是一個fundamental flaw that DateTime is used for several different things,但如果你小心的話,你應該能夠解決它。

1
string today_date = DateTime.Now.Date.ToShortDateString(); 

將鼠標懸停在今天的日期,你會得到的日期部分。