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

Ash*_*hok -2 c# sql sql-server datetime

我正在VS2010 c#中开发一个应用程序来从SQLServer获取单行数据并将其插入MySQL.

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

日期和时间24小时. 格式

获取代码如下.

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());
    }
Run Code Online (Sandbox Code Playgroud)

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

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

请帮忙解决它.

提前致谢.

Jon*_*eet 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);
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅有关标准日期/时间格式自定义日期/时间格式的MSDN文章.

但是,如果目的真的只是将其插入到MySQL,你应该把它转换成字符串在所有.只需将参数值直接传递给相应的MySQL命令作为参数即可.添加字符串转换只会增加混乱.尽可能将数据保持为"自然"类型 - 在本例中为DateTime.