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?

C# 中的日期时间与 SQL Server 中的 SQL 和 GETDATE()

c# SQL Server:日期时间数据类型

使用 C# DateTime 将 SQL 日期时间设置为最小值

从 C# 中的字符串 SQL 转换日期和/或时间时转换失败

在 C# 中将十六进制值从 SQL Server 转换为日期时间