只从asp.net的DateTime列中提取日期
本文关键字:提取 取日期 DateTime asp net 只从 | 更新日期: 2023-09-27 18:13:28
在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?
如有任何帮助,我们将不胜感激。
作为DateTime
检索的值将始终包括时间,因为类型就是这样定义的。您可以:
- 使用
Date
属性来确保在午夜获得DateTime
值(例如,用于相等计算( - 为用户设置格式时忽略时间部分。若要将
DateTime
格式化为仅以区域性敏感的方式显示日期,应使用"d"或"d"标准日期/时间格式说明符。不要硬编码自定义日期/时间格式字符串,除非您确信这是您的用户所期望的。(例如,2011年4月11日对我来说就像是4月11号…(
您还希望如何使用该值?虽然我认为DateTime
用于几种不同的事情是一个根本缺陷,但如果你小心的话,你应该能够解决它。
不要指定大小,请尝试
Convert(varchar,[trainingDate],101)
如果你今天在SQL Server上运行这个,你会得到:
Declare @datey datetime
Set @datey = GETDATE()
Select CONVERT(varchar, @datey, 101) as [DateOnly]
结果:2011年4月11日
同样值得注意的是,在SQLServerDenali中,所有这些用于格式化的神奇数字都将随着新的FORMAT((函数
如果要在asp网格中显示它,可以在边界字段上执行此操作。
<asp:BoundField DataField="datafield" HeaderText="displayText" DataFormatString="{0:MM/dd/yyyy}" HtmlEncode="false"/>
但是如果您想在选择查询中使用它
Select convert(varchar,trainingDate, 101) as trainingDate
要只获取日期部分,可以执行以下操作:
DateTime dt = DateTime.Now;
dt = dt.Date;
如果要显示日期,可以使用MM/dd/yyyy
格式。如果只想从SQL Server返回日期部分,请使用格式111
而不是101
。
string today_date = DateTime.Now.Date.ToShortDateString();
将鼠标悬停在今天的日期上,您将获得日期部分。
使用CONVERThttp://msdn.microsoft.com/en-us/library/ms187928.aspx
在Sql Server 2008的情况下,您可以强制转换为内置日期类型:
CAST(trainingDate as DATE)
最终查询:
SELECT training_id, CAST(trainingDate as DATE)
FROM tbl_training