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这种。这样当程序中将2012/01/04这种格式Insert进MM/dd/yyyy时会报溢出吗?
如果谁也碰到过这种情况,帮忙分析一下,谢谢!
- C# code
if (usersEntity == null) { usersEntity = new UsersEntity { GroupID = groupEntity.GroupID, UserName = userName, UserType = "USER", UserEmail = email ?? string.Empty, AddDate = DateTime.Now, UpdateDate = DateTime.Now,……
------解决方案--------------------
- SQL code
--日期转换参数,值得收藏select convert(varchar,getdate(),120)--2009-02-04 12:55:30select replace(replace(replace(convert(varchar, getdate(),120),'-',''),' ',''),':','')--20090204125539select convert(varchar(12),getdate(),111)--2009/02/04select convert(varchar(12),getdate(),112)--20090204select convert(varchar(12),getdate(),102)--2009.02.04--其它我不常用的日期格式转换方法:select convert(varchar(12),getdate(),101)--02/04/2009select convert(varchar(12),getdate(),103)--04/02/2009select convert(varchar(12),getdate(),104)--04.02.2009select convert(varchar(12),getdate(),105)--04-02-2009select convert(varchar(12),getdate(),106)--04 feb 2009select convert(varchar(12),getdate(),107)--feb 04, 2009select convert(varchar(12),getdate(),108)--12:57:20select convert(varchar(12),getdate(),109)--feb 4 2009 select convert(varchar(12),getdate(),110)--02-04-2009select convert(varchar(12),getdate(),113)--04 feb 2009 select convert(varchar(12),getdate(),114)--12:56:50:763
------解决方案--------------------
你时间字段用的是时间类型,还是字符串类似?
Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM
时间应该是1753年到9999年之间的。
------解决方案--------------------
用datetime 应该是会自动识别 不会出错的
------解决方案--------------------
开始-->设置-->控制面板-->区域和语言选项-->区域选项-->自定义-->日期
--> 确认两边的日期格式是否相同.