c#时间到sql日期时间
Posted
技术标签:
【中文标题】c#时间到sql日期时间【英文标题】:c# time to sql date time 【发布时间】:2018-01-06 23:17:58 【问题描述】:在将记录插入数据库时,我无法将 c# 日期时间7/31/2017 3:13:49 PM 转换为 SQL 日期时间。
我正在使用
DateTime dt = DateTime.Parse("11/23/2010");
string toSqlDate= dt.ToString("yyyy-MM-dd HH:mm:ss");
DateTime finalDate = DateTime.Parse(toSqlDate);
但它给了我错误。
字符串未被识别为有效的日期时间。
【问题讨论】:
你在使用什么 rdbms? 如果你使用 sql server,日期时间是兼容的 首先您解析不同格式的日期字符串,然后尝试解析格式字符串。查看DateTime.ParseExact
的文档
@ZoharPeled 我正在使用 sql server 2014。
【参考方案1】:
.Net DateTime
maps directly 到 SQL Server DateTime
。这意味着您根本不需要担心显示格式,因为DateTime
does not have a display format.
您需要做的就是将DateTime
结构的实例作为参数 传递给SqlCommand
:
SqlCommand.Parameters.Add("@DateTimeParam", SqlDbType.DateTime).Value = dt;
额外阅读:How do I create a parameterized SQL query? Why Should I?
【讨论】:
【参考方案2】:将其更改为年/月/日后,这会有所帮助!
var sqlDate = finalDate.Date.ToString("yyyy-MM-dd HH:mm:ss");
【讨论】:
【参考方案3】:您的日期格式是“年-月-日”,而您的日期是“月/日/年”,这是不对的。更改您的日期格式或日期的格式。
这应该可行:
DateTime dt = DateTime.Parse("2010-11-23 00:00:00");
string toSqlDate= dt.ToString("yyyy-MM-dd HH:mm:ss");
【讨论】:
我明白,但我想将值 7/22/2017 3:13:49 AM 插入到 sql 表中。这是什么格式。【参考方案4】:将查询更改为
insert into table_name (column1) values ('" + dt.Value.ToString("yyyy-MM-dd") + "')
【讨论】:
其实我用的是linq to sql。【参考方案5】:尝试 DateTime.ParseExact 方法并指定适合您的日期格式,这里是 MSDN 中的示例(https://msdn.microsoft.com/fr-fr/library/w2sa9yss(v=vs.110).aspx):
var dateString = "06/15/2008";
var format = "d";
try
var result = DateTime.ParseExact(dateString, format,
CultureInfo.InvariantCulture);
Console.WriteLine("0 converts to 1.", dateString,
result.ToString());
catch (FormatException)
Console.WriteLine("0 is not in the correct format.", dateString);
【讨论】:
以上是关于c#时间到sql日期时间的主要内容,如果未能解决你的问题,请参考以下文章
C# 中的日期时间与 SQL Server 中的 SQL 和 GETDATE()