如何在C#中24小时内获取SQL Server日期时间值

时间:2013-11-18 05:06:52

标签: c# sql sql-server datetime

我正在开发VS2010 c#中的应用程序,以从SQLServer获取单行数据并将其插入MySQL。

我有一个列名为Date_Time的表,其中包含24小时的日期和时间。格式如下图所示。

date and time in 24 hrs. format

获取代码如下。

SqlCommand cmd = new SqlCommand("SELECT TOP (1) s_name, s_city, s_address, s_added_date, s_added_by FROM tblAQI ORDER BY s_added_date DESC", SSCon);
    SqlDataReader dr = cmd.ExecuteReader();
    while (dr.Read())
    {
        s_name = (dr["s_name"].ToString());
        s_city = (dr["s_city"].ToString());
        s_address = (dr["s_address"].ToString());
        s_added_date = (dr["s_added_date"].ToString());
        s_added_by = (dr["s_added_by"].ToString());
    }

当我打印s_added_date的值时,它给了我 value of s_added_date

我的问题是为什么它会这样显示,我怎样才能在24小时内得到这个时间。格式。

请帮忙解决。

提前致谢。

3 个答案:

答案 0 :(得分:6)

  

我有一个列名为Date_Time的表,其中包含24小时的日期和时间。格式

不,您的表格的列类型为DateTime。这些值本身并不具有任何格式 - 它们恰好在SQL结果查看器中以一种方式显示,这与.NET默认情况下的格式不同。

了解这里的数据只是日期和时间非常重要 - 而不是格式。

要以特定方式对其进行格式化,请将其强制转换为DateTime,然后使用ToString重载,以便您指定格式:

DateTime addedDate = (DateTime) sr["s_added_date"];
string addedDateText = addedDate.ToString("dd-MMM-yyyy HH:mm:ss",
                                          CultureInfo.InvariantCulture);

有关详细信息,请参阅standard date/time formattingcustom date/time formatting上的MSDN文章。

但是,如果目的只是将其插入MySQL,则不应将其转换为字符串 at all 。只需将参数值直接传递给相应的MySQL命令作为参数即可。添加字符串转换只会增加混乱。尽可能将数据保持为“自然”类型 - 在本例中为DateTime

答案 1 :(得分:1)

制作以下内容:

s_added_date = (dr["s_added_date"].ToString());

s_added_date = (dr["s_added_date"].ToString("dd/MM/yyyy HH:mm:ss"));

您的代码将是:

SqlCommand cmd = new SqlCommand("SELECT TOP (1) s_name, s_city, s_address, s_added_date, s_added_by FROM tblAQI ORDER BY s_added_date DESC", SSCon);
    SqlDataReader dr = cmd.ExecuteReader();
    while (dr.Read())
    {
        s_name = (dr["s_name"].ToString());
        s_city = (dr["s_city"].ToString());
        s_address = (dr["s_address"].ToString());
        s_added_date = (dr["s_added_date"].ToString("dd/MM/yyyy hh:mm:ss"));
        s_added_by = (dr["s_added_by"].ToString());
    }

如果ypu想要它作为2013年11月11日10:23:25格式:

 s_added_date = (dr["s_added_date"].ToString("dd-MMM-yyyy hh:mm:ss"));

答案 2 :(得分:1)

试试这个

SqlCommand cmd = new SqlCommand("SELECT TOP (1) s_name, s_city, s_address, DATE_FORMAT(s_added_date,'%T'), s_added_by FROM tblAQI ORDER BY s_added_date DESC", SSCon);

 SqlDataReader dr = cmd.ExecuteReader();
    while (dr.Read())
    {
        s_name = (dr["s_name"].ToString());
        s_city = (dr["s_city"].ToString());
        s_address = (dr["s_address"].ToString());
        s_added_date = (dr["s_added_date"].ToString());
        s_added_by = (dr["s_added_by"].ToString());
    }