数据库date类型和系统/服务器 的date类型问题,求解

fudapeng7 2015-08-10 10:54:11
未处理System.Exception
Message: “System.Exception”类型的未经处理的异常在 Microsoft.Practices.EnterpriseLibrary.Data.dll 中发生
其他信息: 数据库:data source=192.16.168.63/orcl;
错误信息:ORA-01858: 在要求输入数字处找到非数字字符

执行代码:'DELETE FROM TS_ONLINE_USER WHERE ACTIVE_TIME < TO_DATE('2015/8/10 星期一 上午 8:57:39', 'YYYY-MM-DD HH24:MI:SS')'

用框架开始搭建项目,执行数据库脚本建表之后,登陆项目系统的时候发生异常,异常信息如上所示!数据库是没问题的,因为之前都没问题。应该就是标题所示的数据库date和系统的时间的问题了,不会解决,求解~~~
...全文
305 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
古米 2015-08-11
  • 打赏
  • 举报
回复
hwyqy 2015-08-10
  • 打赏
  • 举报
回复
引用 17 楼 ajianchina 的回复:
在系统环境变量中,添加此一个参数值即可: 在 .bash_profile文件中添加export NLS_DATE_FORMAT='YYYY:MM:DD HH24:MI:SS' 然后执行 source ~/.bash_profile,使环境变量生效。
这个非常不错 如果改系统默认时间格式不行的话 但要注意,你改了本机调试,将来如果上传的空间是虚拟空间可就没用啦
ajianchina 2015-08-10
  • 打赏
  • 举报
回复
在系统环境变量中,添加此一个参数值即可: 在 .bash_profile文件中添加export NLS_DATE_FORMAT='YYYY:MM:DD HH24:MI:SS' 然后执行 source ~/.bash_profile,使环境变量生效。
ajianchina 2015-08-10
  • 打赏
  • 举报
回复
引用 14 楼 fudapeng7的回复:
[quote=引用 13 楼 ajianchina 的回复:] [quote=引用 11 楼 fudapeng7的回复:]我系统的时间是'2015/8/10 星期一 上午 8:57:39',与代码格式 'YYYY-MM-DD HH24:MI:SS'不匹配,我修改了系统的时间格式就解决了~把表数据清空的时候,登陆不报异常,过一会儿就报异常了,而且表里有数据,ACTIVE_TIME这字段里也有数据的
还没配置好,重新配置,截图弄出来,你自己想出来了,哈哈。[/quote] 不行的,我也把系统时间修改的跟格式一样了 YYYY-MM-DD HH24:MI:SS ,可是插入数据的时候又是老样子了 2015/8/10 星期一 上午 8:57:39[/quote] 之前没问题,那就是现在的环境问题,这一问题可以进行配置。当然了,这是你现在最简单的解决手段。
fudapeng7 2015-08-10
  • 打赏
  • 举报
回复
引用 9 楼 starfd 的回复:
string dtStr = @"2015/8/10 星期一 上午 8:57:39";
DateTime dtTmp = DateTime.ParseExact(dtStr, "yyyy/M/d dddd tt h:m:s", DateTimeFormatInfo.CurrentInfo);
Console.WriteLine(dtTmp);
星期一也加上去的转化方法,还是C#程序里面转化 你的SQL代码就是
DELETE FROM TS_ONLINE_USER WHERE ACTIVE_TIME < :ACTIVE_TIME
然后程序里面就是将:ACTIVE_TIME这个参数传递
我刚从java转.NET 话说在哪里改代码我都找不到,貌似要修改DLL文件
fudapeng7 2015-08-10
  • 打赏
  • 举报
回复
引用 13 楼 ajianchina 的回复:
[quote=引用 11 楼 fudapeng7的回复:]我系统的时间是'2015/8/10 星期一 上午 8:57:39',与代码格式 'YYYY-MM-DD HH24:MI:SS'不匹配,我修改了系统的时间格式就解决了~把表数据清空的时候,登陆不报异常,过一会儿就报异常了,而且表里有数据,ACTIVE_TIME这字段里也有数据的
还没配置好,重新配置,截图弄出来,你自己想出来了,哈哈。[/quote] 不行的,我也把系统时间修改的跟格式一样了 YYYY-MM-DD HH24:MI:SS ,可是插入数据的时候又是老样子了 2015/8/10 星期一 上午 8:57:39
ajianchina 2015-08-10
  • 打赏
  • 举报
回复
引用 11 楼 fudapeng7的回复:
我系统的时间是'2015/8/10 星期一 上午 8:57:39',与代码格式 'YYYY-MM-DD HH24:MI:SS'不匹配,我修改了系统的时间格式就解决了~把表数据清空的时候,登陆不报异常,过一会儿就报异常了,而且表里有数据,ACTIVE_TIME这字段里也有数据的
还没配置好,重新配置,截图弄出来,你自己想出来了,哈哈。
ajianchina 2015-08-10
  • 打赏
  • 举报
回复
操作系统日期格式重新配置一下不就行了吗
fudapeng7 2015-08-10
  • 打赏
  • 举报
回复
我系统的时间是'2015/8/10 星期一 上午 8:57:39',与代码格式 'YYYY-MM-DD HH24:MI:SS'不匹配,我修改了系统的时间格式就解决了~把表数据清空的时候,登陆不报异常,过一会儿就报异常了,而且表里有数据,ACTIVE_TIME这字段里也有数据的
fudapeng7 2015-08-10
  • 打赏
  • 举报
回复
引用 8 楼 Z65443344 的回复:
[quote=引用 4 楼 qq_25409579 的回复:] [quote=引用 2 楼 starfd 的回复:] 为啥不直接用参数化:ACTIVETIME呢? 你这个日期格式又不是标准格式,数据库怎么认得出来
这些都是框架写好了的,我都不知道在哪里改~别人用的时候就没有这个问题[/quote] 那就把问题丢给写框架的人,告诉他,这个框架有bug 话说,代码在你手里,你却不会改,那么问了问题又有啥意义呢[/quote] 谢谢~这个好了,是我系统的时间是'2015/8/10 星期一 上午 8:57:39',与代码格式 'YYYY-MM-DD HH24:MI:SS'不匹配,我修改了系统的时间格式就解决了~
  • 打赏
  • 举报
回复
string dtStr = @"2015/8/10 星期一 上午 8:57:39";
DateTime dtTmp = DateTime.ParseExact(dtStr, "yyyy/M/d dddd tt h:m:s", DateTimeFormatInfo.CurrentInfo);
Console.WriteLine(dtTmp);
星期一也加上去的转化方法,还是C#程序里面转化 你的SQL代码就是
DELETE FROM TS_ONLINE_USER WHERE ACTIVE_TIME < :ACTIVE_TIME
然后程序里面就是将:ACTIVE_TIME这个参数传递
於黾 2015-08-10
  • 打赏
  • 举报
回复
引用 4 楼 qq_25409579 的回复:
[quote=引用 2 楼 starfd 的回复:] 为啥不直接用参数化:ACTIVETIME呢? 你这个日期格式又不是标准格式,数据库怎么认得出来
这些都是框架写好了的,我都不知道在哪里改~别人用的时候就没有这个问题[/quote] 那就把问题丢给写框架的人,告诉他,这个框架有bug 话说,代码在你手里,你却不会改,那么问了问题又有啥意义呢
  • 打赏
  • 举报
回复
框架写好?你用的是微软企业库啊,这个框架没写这块内容,别人可以估计是因为用的不是你这种格式的日期,用的是类似 2015-8-10 8:57:39这样的格式,这种格式能够直接被识别的
宝_爸 2015-08-10
  • 打赏
  • 举报
回复
你这个是字符串不是日期。 sqlserver中的标准时期格式是ISO 8601格式,没有歧义 -- unambiguous. YYYY-MM-DDThh:mm:ss[.mmm] YYYYMMDD[ hh:mm:ss[.mmm]] 参考: https://msdn.microsoft.com/en-AU/library/ms187819.aspx oracle中应该也有类似格式。
  • 打赏
  • 举报
回复
string dtStr = @"2015/8/10 上午 8:57:39";
DateTime dtTmp = DateTime.ParseExact(dtStr, "yyyy/M/d tt h:m:s", DateTimeFormatInfo.CurrentInfo);
Console.WriteLine(dtTmp);
将星期一去掉后怎么转化成DateTime
fudapeng7 2015-08-10
  • 打赏
  • 举报
回复
引用 2 楼 starfd 的回复:
为啥不直接用参数化:ACTIVETIME呢? 你这个日期格式又不是标准格式,数据库怎么认得出来
这些都是框架写好了的,我都不知道在哪里改~别人用的时候就没有这个问题
fudapeng7 2015-08-10
  • 打赏
  • 举报
回复
引用 1 楼 Z65443344 的回复:
DateTime.ToString("yyyy-MM-dd HH:mm:ss") 时间拼接进SQL语句里要格式化一下,不要按操作系统默认时间格式转字符串,数据库不认识什么星期一
这些都是框架写好了的,我都不知道在哪里改~别人用的时候就没有这个问题
  • 打赏
  • 举报
回复
为啥不直接用参数化:ACTIVETIME呢? 你这个日期格式又不是标准格式,数据库怎么认得出来
於黾 2015-08-10
  • 打赏
  • 举报
回复
DateTime.ToString("yyyy-MM-dd HH:mm:ss") 时间拼接进SQL语句里要格式化一下,不要按操作系统默认时间格式转字符串,数据库不认识什么星期一
fudapeng7 2015-08-10
  • 打赏
  • 举报
回复
引用 20 楼 ajianchina 的回复:
先到系统属性中修改日期格式,然后再对注册表日期格式进行修改,重启服务器。


时间格式是改过来了,但是依然还是那个异常,看来那就不是这个问题了~~谢谢大家的帮忙
加载更多回复(2)

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧