在SqlDataSource中,我指定了一个检索日期的SelectCommand:
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 :(得分:3)
作为DateTime
检索的值将始终包含时间,因为这是定义类型的方式。你可以:
Date
属性确保在午夜获得DateTime
值(例如,为了进行相等计算)DateTime
格式化为仅以文化敏感方式显示日期,您应使用“d”或“D”standard date/time format specifier。不要硬编码自定义日期/时间格式字符串,除非您确定这是您的用户期望的。 (11/4/2011对我来说就像4月11日那样......)您还想如何使用该值?虽然我认为它是fundamental flaw that DateTime
is used for several different things,但如果你小心的话,你应该可以解决它。
答案 1 :(得分: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()函数而消失
答案 2 :(得分:1)
如果要在asp网格中显示它,可以在boundfield上执行此操作。
<asp:BoundField DataField="datafield" HeaderText="displayText" DataFormatString="{0:MM/dd/yyyy}" HtmlEncode="false"/>
但如果你想在选择查询中
Select convert(varchar,trainingDate, 101) as trainingDate
答案 3 :(得分:1)
要仅获取日期部分,您可以执行以下操作:
DateTime dt = DateTime.Now;
dt = dt.Date;
如果您要显示日期,则可以使用MM/dd/yyyy
格式。如果只想从SQL Server返回日期部分,请使用格式111
而不是101
。
答案 4 :(得分:1)
string today_date = DateTime.Now.Date.ToShortDateString();
将鼠标悬停在今天的日期,您将获得日期部分。
答案 5 :(得分:0)
答案 6 :(得分:0)
如果是Sql Server 2008,您可以强制转换为内置date type:
CAST(trainingDate as DATE)
最终查询:
SELECT training_id, CAST(trainingDate as DATE)
FROM tbl_training