【问题标题】:Date format on GridView, ASP.NETGridView、ASP.NET 上的日期格式
【发布时间】:2017-06-20 09:25:10
【问题描述】:

我只想在执行 SELECT 语句时从我的数据库中返回日期部分。 (在下面的语句中:Task.ST_Date)

SELECT Task.Details, Task.Pr_ID, EmTask.T_ID, Task.Ref_ID, Task.ST_Date
FROM Task
INNER JOIN EmTask ON Task.Ref_ID = EmTask.T_ID
WHERE EmTask.Em_ID = 214432
    AND Task.STATUS = 'WAITING'
    AND Task.ST_Date BETWEEN CONVERT(VARCHAR(10), GETDATE(), 120)
        AND CONVERT(VARCHAR(10), GETDATE() + 6, 120)

此语句有效,但当我在 gridview 中查看时,此格式显示:2/3/2017 12:00:00 AM

有什么办法可以将格式修改为'yyyy-MM-dd'?

*数据库内(MSSQL):日期数据类型,yyyy-MM-dd格式

【问题讨论】:

  • 您必须为 DataType="System.DateTime" 和 DataFormatString="{0:yyyy-MM-dd}" 提供 GridView 本身的 BoundField,如下面的回答所示。

标签: asp.net sql-server date gridview


【解决方案1】:

使用

SELECT CONVERT(VARCHAR(10), Task.ST_Date, 120)

或在 C# 中使用Eval

Text='<%# Eval("ST_Date", "{0:yyyy-MM-dd}") %>'

<asp:boundfield datafield="ST_Date" dataformatstring="{0:yyyy-MM-dd}" />

【讨论】:

    【解决方案2】:

    您可以格式化 GridView 列,以您想要的格式显示日期

    <asp:BoundField DataField="YourDateField" HeaderText="SomeHeader" 
                        DataFormatString="{0:yyyy-MM-dd}"  />
    

    或者如果你有 TemplateField

    <asp:TemplateField HeaderText="Number">
        <ItemTemplate>
            <asp:Label ID="txtDate" runat="server" Text='<%# Convert.ToDateTime(DataBinder.Eval("dateTime")).ToString("yyyy-MM-dd") %>'></asp:Label>
        </ItemTemplate>
    </asp:TemplateField>
    

    【讨论】:

      【解决方案3】:
      SELECT CONVERT(CHAR(10), convert(DATE, '2/3/2017 12:00:00 AM'), 126)
      

      输出

      DATE
      2017-02-03
      

      您可以自行更改查询

      SELECT TASK.DETAILS, TASK.PR_ID, EMTASK.T_ID, TASK.REF_ID,CONVERT(CHAR(10), CONVERT(DATE, TASK.ST_DATE), 126)
      FROM TASK
      INNER JOIN EMTASK ON TASK.REF_ID = EMTASK.T_ID
      WHERE EMTASK.EM_ID = 214432
          AND TASK.STATUS = 'WAITING'
          AND TASK.ST_DATE BETWEEN CONVERT(VARCHAR(10), GETDATE(), 120)
              AND CONVERT(VARCHAR(10), GETDATE() + 6, 120)
      

      【讨论】:

        【解决方案4】:

        您必须为DataType="System.DateTime"DataFormatString="{0:yyyy-MM-dd}" 提供GridView 本身的BoundField,如下所示。

        <asp:BoundField DataType="System.DateTime" DataField="YourDateField" HeaderText="SomeHeader" DataFormatString="{0:yyyy-MM-dd}"  />
        

        【讨论】:

          【解决方案5】:
          SELECT Task.Details, Task.Pr_ID, EmTask.T_ID, Task.Ref_ID,CONVERT(VARCHAR(10), Task.ST_Date , 120) as ST_Date
          FROM Task
          INNER JOIN EmTask ON Task.Ref_ID = EmTask.T_ID
          WHERE EmTask.Em_ID = 214432
          AND Task.STATUS = 'WAITING'
          AND Task.ST_Date BETWEEN CONVERT(VARCHAR(10), GETDATE(), 120)
          AND CONVERT(VARCHAR(10), GETDATE() + 6, 120)
          

          【讨论】:

            【解决方案6】:

            根据所需格式格式化 GridView 列:

            <asp:TemplateField HeaderText="Save Dt">
                <ItemTemplate>
                    <asp:Label ID="lblSDate1" runat="server" HtmlEncode="false" Text='<%# Eval("SDate", "{0:dd-MMM-yyyy}") %>' />
                </ItemTemplate>
            </asp:TemplateField>
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2018-09-28
              • 2013-11-17
              • 1970-01-01
              • 2013-01-15
              • 2014-03-19
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多