首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >转换DateTime引发SqlDateTime溢出

转换DateTime引发SqlDateTime溢出
EN

Stack Overflow用户
提问于 2015-06-16 19:28:46
回答 2查看 861关注 0票数 0

目前我有一个日期和时间的字符串。当我显示字符串时,它看起来如下:

2015-06-16 09:17:28

但当我试图把它放到数据库里时,它告诉我:

附加信息: SqlDateTime溢出。必须在1/1/1753 12:00上午12:00至12/31/9999 11:59:59下午

我得把绳子转换一下。所以现在有别的办法了!

怎么做才是对的?显然,数据库中的值是datetime。

这是我的代码(实际上它来自多个类):

代码语言:javascript
复制
    string time = date + " " + txtTime.Text;
    DateTime temp = Convert.ToDateTime(time);
    String query ="insert into reserveringen (reserveringId,klantId,medewerkerId,aantalPersonen,begintijd,eindtijd)values(@reserveringId,@klantId,@medewerkerId,@aantalPersonen,@begintijd,@eindtijd)";
    SqlCommand comm = sqlCrud.returnSqlCommand(query);
    comm.Parameters.AddWithValue("begintijd",temp);

我已经搜索了很多..。但什么都不管用。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-16 19:53:42

您不应该那样使用Convert.ToDateTime。您应该使用DateTime.ParseDateTime.ParseExact

代码语言:javascript
复制
DateTime temp = DateTime.ParseExact(time, "yyyy-MM-dd hh:mm:ss tt", CultureInfo.InvariantCulture);

因为DateTime.Parse(temp)为您工作,所以您可以不使用它了。

编辑:

这两种方法的区别在于,在这种情况下,非常

代码语言:javascript
复制
Convert.ToDateTime(s)

此方法将使用以下参数在内部调用DateTime.Parse

代码语言:javascript
复制
DateTime.Parse(s, DateTimeFormatInfo.CurrentInfo, DateTimeStyles.None);

现在,DateTime.Parse(s)做了一些不同的事情:

代码语言:javascript
复制
DateTime.Parse(s, DateTimeFormatInfo.CurrentInfo, DateTimeStyles.AllowWhiteSpaces);

区别是DateTimeStyles标志。此标志完全更改输出Convert.ToDateTime(s)可能返回一个DateTime.MinValue对象,这是它遇到null字符串时所做的事情。(我只能在不花费更多时间进行研究的情况下猜测,但这一结果是有意义的,因为DateTime.MinValue1/1/0001 12:00:00 AM,这超出了SQL的预期范围。)

参考文献:

http://bytes.com/topic/c-sharp/answers/482419-convert-todatetime-vs-system-datetime-parse

https://msdn.microsoft.com/en-us/library/system.datetime.parse(v=vs.110).aspx

https://msdn.microsoft.com/en-us/library/system.datetime.minvalue(v=vs.110).aspx

票数 1
EN

Stack Overflow用户

发布于 2015-06-16 19:52:09

两者都有

代码语言:javascript
复制
DateTime.Parse("2015-06-16 09:17:28 PM");

代码语言:javascript
复制
Convert.ToDateTime(date);

将返回相同的DateTime值。

我会把重点放在查询上。

请注意,您可能从C#传递一个值,该值以DateTime (1/1/0001 12:00:00 AM)的最小值解析,该值超出了Server上DateTime值的范围。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30876495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档