如何编写SQL来显示短日期和时间

时间:2014-04-22 19:28:44

标签: c# asp.net sql postgresql

我正在使用C#和postgreSQL数据库在asp.net中构建一个Web应用程序。该申请是预约系统。

在列表框中,我打印某个约会的日期,时间和名称。我从数据库中获取日期,时间和名称。 我的问题是日期和时间以长格式显示,见下图。

enter image description here

我希望以 2014-04-22 的格式显示日期,并以格式 08:00 显示时间。

我的代码:

string sql = "SELECT date, time, name FROM tbl_app WHERE id = '" + id + "'";

NpgsqlCommand command = new NpgsqlCommand(sql, conn);
NpgsqlDataReader dr = command.ExecuteReader();
while (dr.Read())
{
    Listbox.Items.Add(dr["date"] + " " + dr["time"] + " " + dr["name"]);       
}

2 个答案:

答案 0 :(得分:4)

不确定如何在Postgres结束时完成格式化,但字段看起来是DateTime类型,您可以格式化C#代码中的DateTime对象,如:

while (dr.Read())
{
    //Check for DBNull.Value
    DateTime date = Convert.ToDateTime(dr["date"]);
    DateTime time = Convert.ToDateTime(dr["time"]);
    Listbox.Items.Add(date.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture) + " " 
                      time.ToString("HH:mm", CultureInfo.InvariantCulture) + " " 
                     + dr["name"]);
}

考虑在查询中使用parameter而不是连接查询。这很容易SQL Injection。您可能会看到:Custom Date and Time Format Strings

答案 1 :(得分:2)

您可以使用ToShortDateStringToShortTimeString处理字符串,这就是我在DataReader项目上使用ToString的原因

while (dr.Read())
{
    Listbox.Items.Add(dr["date"].ToString().ToShortDateString() + " " + dr["time"].ToString().ToShortTimeString() + " " + dr["name"]);       
}

http://msdn.microsoft.com/en-us/library/system.datetime.toshorttimestring.aspx http://msdn.microsoft.com/en-us/library/system.datetime.toshortdatestring.aspx

修改
正如评论指出ToShortDateString确实存在于Strings上,而是应用于DateTime值...代码更新以显示如何

while (dr.Read())
{
    Listbox.Items.Add(
        DateTime.Parse(dr["date"].ToString()).ToShortDateString() + " " +
        DateTime.Parse(dr["time"].ToString()).ToShortTimeString() + " " + 
        dr["name"]);       
}