我正在开发VS2010 c#中的应用程序,以从SQLServer获取单行数据并将其插入MySQL。
我有一个列名为Date_Time的表,其中包含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());
}
当我打印s_added_date的值时,它给了我
我的问题是为什么它会这样显示,我怎样才能在24小时内得到这个时间。格式。
请帮忙解决。
提前致谢。
答案 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 formatting和custom 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());
}