C# 如何获取SQL Server datetime值,因为它在C中是24小时的#
我正在VS2010 c#中开发一个应用程序,从SQLServer获取单行数据并将其插入MySQL 我有一个列名为Date\u Time的表,包含24小时内的日期和时间。格式如下图所示 获取代码如下所示C# 如何获取SQL Server datetime值,因为它在C中是24小时的#,c#,sql,sql-server,datetime,C#,Sql,Sql Server,Datetime,我正在VS2010 c#中开发一个应用程序,从SQLServer获取单行数据并将其插入MySQL 我有一个列名为Date\u 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);
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小时内得到这个时间。格式
请帮助解决它
提前感谢。写下以下行:
s_added_date = (dr["s_added_date"].ToString());
到
您的代码将是:
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"));
我有一个列名为Date\u 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);
有关更多信息,请参阅和上的MSDN文章
但是,如果目的只是将其插入MySQL,则根本不应将其转换为字符串。只需将参数值作为参数直接传递到相应的MySQL命令中。添加字符串转换只会增加混乱。尽可能将数据保持为“自然”类型—在本例中为DateTime
尝试以下方法
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());
}
对此已经有了答案:,可能是@JonSkeet的副本,但在这种情况下,我们不需要写hh?因为我只参考了你的答案:我不明白你在问什么
hh
是12小时,hh
是24小时。OP需要24小时格式,因此他应该有HH
。。。虽然我认为他根本不应该设置值的格式。@JonSkeet他有24小时格式,并且希望是12小时格式,这是我从问题中了解到的,我建议你重新阅读这个问题。他在SQL Server中看到了24小时格式(某种形式),但在他的应用程序中看到了12小时格式:“当我打印s_added_date的值时,它会给我s_added_date的值,我的问题是为什么会显示这样的值,以及我如何在24小时格式中获得这个时间。”@JonSkeet ohh,是的,对不起,这完全是我在阅读和理解问题时的错误,thanx a lotif对格式检查此链接有问题
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());
}