繁体   English   中英

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

[英]How to write SQL to display short date and time

我正在使用C#和postgreSQL数据库在asp.net中构建Web应用程序。 该应用程序是用于约会的预订系统。

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

在此处输入图片说明

我想以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"]);       
}

不太确定如何在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"]);
}

考虑在查询中使用参数 ,而不是串联查询。 这很容易发生SQL注入 您可能会看到: 自定义日期和时间格式字符串

您可以使用对字符串有效的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确实存在于字符串上,而是应用于DateTime值...更新了代码以显示如何

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM