【问题标题】:Need to be able to convert nvarchar date to date format without time showing on frontend需要能够将 nvarchar 日期转换为日期格式,而无需在前端显示时间
【发布时间】:2013-09-12 06:10:47
【问题描述】:

我正在处理一个 SQL Server 2008 r2 数据库,其中创建日期和时间位于不同的字段中,并且每个字段的数据类型都是 nvarchar。我知道这很可怕,但我现在被这个结构困住了,无法更改数据库。我将此创建日期从数据库(使用存储过程)返回到前端,这是一个 asp.net 网络表单页面。此数据正在绑定到 GridView。

一旦进入此网格视图,用户希望能够单击此日期并按日期对行进行排序。显然这目前不起作用,因为日期是 varchar 格式。所以我试图将存储过程中的这个日期转换为一些有效的日期格式,如日期时间,并将其作为有效的日期格式返回到前端。这样我就可以按日期正确排序了。

好消息是我已经能够做到这一点,但坏消息是,当我将 nvarchar 日期转换为 datetime 对象时,我不断得到类似 00:00:0 的时间。我对此进行了研究,无论我做什么,我都无法摆脱这个时间。我需要的只是有效日期格式的日期。我不需要时间。有人可以告诉我如何在没有时间的情况下将其转换为日期吗?

【问题讨论】:

  • 显示部分可以使用字符串格式:yourDate.ToString("MM/dd/yyyy")
  • 我不认为这对我有用。日期是绑定到 GridView 控件的数据集的一部分。我相信我也不能在列定义中使用字符串格式,因为我需要将值作为日期对象。
  • 查看我对.aspx 部分的回答。它将处理来自DataSet 的数据绑定字段。

标签: asp.net sql-server sql-server-2008 webforms


【解决方案1】:

在 grdivew 中应用文本格式的最简单方法是使用 gridview 绑定字段的 DataFormatString 属性。 如下图所示

<asp:GridView ID="GridView1" runat="server" 
            AutoGenerateColumns="False">
            <Columns>
                <asp:BoundField DataField="Date" 
                    HeaderText="Date" 
                    DataFormatString="MM/dd/yyyy" />
           </Columns>
  </asp:GridView>

【讨论】:

  • 在 SQL Server 中转换为日期和使用 DataFormatString 的组合解决了我的问题。谢谢!
【解决方案2】:

您可以使用以下日期的字符串格式...

//For .cs code
lblDate.Text = yourDateField.ToString("MM/dd/yyyy");

<%-- For .aspx markup --%>
<asp:label ID="lblDate" runat="server" Text='<%# Convert.ToDateTime(Eval("yourDateField")).ToString("MM/dd/yyyy") %>' />

并使用您的存储过程缩短日期。

编辑

当然,您可以格式化来自DataSet 的任何字段,它绑定到GridView 作为DataSource

将以下标记放入您的GridView 中的.aspx 页面...

<%# Convert.ToDateTime(Eval("yourDateField")).ToString("MM/dd/yyyy") %>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-15
    • 1970-01-01
    • 2021-05-27
    • 1970-01-01
    • 2015-09-23
    • 1970-01-01
    • 2012-11-26
    • 2021-01-17
    相关资源
    最近更新 更多