如何在使用存储过程从数据库中提取数据时从DateTime中删除时间

本文关键字:提取 数据 DateTime 时间 删除 数据库 存储过程 | 更新日期: 2023-09-27 18:18:21

我在SQL Server上托管了一个数据库表。

问题是一个列,它是'date'类型。当使用我的存储过程从数据库中提取数据时,显示的日期加上时间12:00:00 AM。

例如,日期'30/10/2015'将作为单独的日期存储在数据库中,但是当它被添加到gridview中时,如上所述,时间12:00:00AM被附加到它。我只想在gridview中显示日期,而不是时间。

下面是将数据从数据库绑定到gridview的代码:

private void BindGridEvent()
{
    string constr = System.Configuration.ConfigurationManage.ConnectionStrings["conString"].ConnectionString;
    using (SqlConnection con = new SqlConnection(constr))
    {
        using (SqlCommand cmd = new SqlCommand("EventInfo_CRUD"))
        {
            cmd.Parameters.AddWithValue("@Action", "SELECT");
            using (SqlDataAdapter sda = new SqlDataAdapter())
            {
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Connection = con;
                sda.SelectCommand = cmd;
                using (DataTable dt = new DataTable())
                {
                    sda.Fill(dt);
                    GridView2.DataSource = dt;
                    GridView2.DataBind();
                }
            }
        }
    }
}
下面是用于从数据库中提取数据的存储过程:
[dbo].[EventInfo_CRUD]
      @Action VARCHAR(10)
      ,@EventID INT = NULL
      ,@Location nvarchar(MAX) = NULL
      ,@EventName nvarchar(MAX) = NULL
      ,@EventDescription nvarchar(MAX) = NULL
      ,@EventDate date = NULL
      ,@EventTime time = NULL
      ,@ImageUrl nvarchar(MAX) = NULL
AS
BEGIN
    SET NOCOUNT ON;
    --SELECT
    IF @Action = 'SELECT'
    BEGIN
        SELECT 
            EventID,Location, EventName, EventDescription, 
            EventDate, EventTime, ImageUrl
        FROM EventInformation
    END

帮助将是非常感激的家伙!谢谢!

如何在使用存储过程从数据库中提取数据时从DateTime中删除时间

您需要指示gridview -或者更准确地说:它的BoundField列类型之一-以特定格式显示此。net DateTime -仅显示日期部分,不显示时间。

这意味着你需要手动添加列到gridview -你不能在gridview上使用AutoGenerateColumns

然后,对于有问题的列,您需要像这样设置DataFormatString属性:

<asp:GridView ......>
    <Columns>  
        .......
        <asp:BoundField DataField="EventDate" DataFormatString="{0:d}" />
        .......
    </Columns>
</asp:GridView ......>

{0:d}格式字符串指示。net为这个DateTime显示"短日期格式",基本上就是年、月、日,无论你的默认日期格式是什么。

查看DataFormatString上的MSDN文档,了解有关您拥有的所有各种选项的更多详细信息

当我需要在gridview中格式化DateTime列时,下面的工作对我有用

<asp:BoundField DataField="TRANDATE" HeaderText="Document Date" dataformatstring="{0:MM/dd/yyyy}" htmlencode="false" />

为模板字段试试:

<%# Bind("Document Date", "{0:dd/MM/yyyy}") %>

如果您正在使用asp:TemplateField,请尝试以下

<asp:TemplateField>
    <ItemTemplate>
        <asp:Label ID="EventDate" runat="server" Text='<%# Bind("EventDate ", "{0:d}") %>'>
        </asp:Label>
    </ItemTemplate>
</asp:TemplateField>