MSSQL的datetime格式一定是“2012-01-04 13:06:31.000”吗?哪里查看数据库的时间格式和修改?我写的程序在我这边跑是OK的,但到客户那边就报时间溢出
“SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM ”我这边又无法模拟,看代码觉得完全OK啊。所有涉及到时间的都加了DateTime.Now啊,而且数据库的日期字段都设成可为空。所以我猜会不会跟用户环境有问题,比如说软件装在PC A上,数据库装在PC B上,但PC A的时间格式是yyyy/MM/dd这种,但数据库却是MM/dd/yyyy这种。如果谁也碰到过这种情况,帮忙分析一下,谢谢!
if (usersEntity == null)
            {
                usersEntity = new UsersEntity
                {
                    GroupID = groupEntity.GroupID,
                    UserName = userName,
                    UserType = "USER",
                    UserEmail = email ?? string.Empty,
                    AddDate = DateTime.Now,
                    UpdateDate = DateTime.Now,
……

解决方案 »

  1.   

    时间可以在vs 中查一下数据记录,可以看以日期格式 yyyy-MM-dd hh:ss:ms
      

  2.   


    嗯,请问我SQL中的时间格式在哪里调?不是“控制面板-》“区域和语言选项”-》“区域选项(自定义)”。我设了没用。
      

  3.   


    //??
    string sql ="....UpdateDate=getdate()";
      

  4.   

    跟SQL的datetime格式无关,SQL中没有时间格式给你设置,看你的错误提示,并不是时间格式问题,而是客户端得到的并不是datetime类型,强行insert入所导致的错误.
      

  5.   

    我将机器时间格式设成MM/dd/yyyy或者dd/MM/yyyy,数据库中保存的都是这个样子“2011-12-29 14:58:18.000”有试过,在我这边跑都OK。
      

  6.   

    这是个schedule,用try catch写的,并将exception放到log文档中,log中记的就是这一句“SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM ”,没有更多的信息,也无法截屏。
      

  7.   

    SQL貌似不存在时间格式,在SSMS中查出来的只是显示的样子
    问题可能出在你保存数据的部分,就是insert或update部分,
    是不是没有使用SqlParameter而是接拼的
      

  8.   

    1.首选用sql profiler跟踪一下最终执行的sql语句,看下是不是传入的时间有问题2.可以在sql中用isdate判断下是否是日期
      

  9.   

    他不会搞的拼接的吧,这个你先用Sql Server Profiler来探查一下执行的是什么SQL语句,然后把SQL贴出来再看
    Sql Server Profiler这个搜一下就知道怎么用了