只从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?

如有任何帮助,我们将不胜感激。

只从asp.net的DateTime列中提取日期

作为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