没有使用 SubSonic 3 Linq 从 MySQL 填充日期时间值
我有一个带有几个日期时间列的 MySQL 表。这些列设置为允许空值,有些列具有默认值“0000-00-00 00:00:00”。这是一个从 ASP 到 ASP.NET 的转换项目,因此表中充满了数据,并且某些行仍然具有默认值,因此我必须在连接字符串中设置“Allow Zero Datetime=True”以避免出现“Unable”异常将 MySQL 日期/时间值转换为 System.DateTime”
现在,当我生成代码时,一切正常,并且我获得了 DateTime 类型的属性?对于这些列,但是当我查询数据库并填充表示表的对象时,所有 DateTime 属性均为 null。其他属性会填充正确的值。
有人知道为什么吗?
我今天使用的是 MySQL Connector 6.1.3 和从 github 编译的 SubSonic.Core (11/17/2009)
I have a MySQL table with a couple of Datetime columns. The columns are set to allow null and some have default value '0000-00-00 00:00:00'. This is a conversion project from ASP to ASP.NET so the table is full of data, and where some rows still have the default value, so I had to set "Allow Zero Datetime=True" in the connectionstring to avoid the exception "Unable to convert MySQL date/time value to System.DateTime"
Now when I generate the code it all works fine and I get properties of type DateTime? for those columns, but when I query the database and populate an object representing the table all DateTime properties are null. Other properties gets populated their correct values.
Anybody knows why?
I'm using MySQL Connector 6.1.3 and SubSonic.Core compiled from the github today (11/17/2009)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我做了一些数据清理。将所有日期时间列更新为 null,其中日期为“0000-00...”,并从连接字符串中删除“允许零日期时间 = True”,然后它就可以工作了。猜猜 SubSonic 不支持零日期,为什么要支持它,我没有看到零日期比空值有任何用处。
I did some data cleaning. Updated all datetime columns to null where date was '0000-00...' and removed "Allow Zero Datetime=True" from the connectionstring, and then it works. Guess zero dates are not supported by SubSonic, and why should it, I don´t see any use for zero dates over null.
我从不同 SQL DBMS 转换日期时间格式的技巧是将列加载为 VARCHAR。然后使用 SUBSTRING 和 CONCAT 等字符串函数进行操作并获得所需的格式。根据经验,这可以节省大量时间。无需担心 dbms 自动转换为日期时间。
MySQL 使用“YYYY-MM-DD HH:MM:SS”
My trick for converting datetime format from different SQL DBMS is to load the column as VARCHAR. Then use string functions such as SUBSTRING and CONCAT to play around and get the desire format. From experience this saves a lot of time. No need to worry about dbms automatic conversion for datetime.
MySQL uses 'YYYY-MM-DD HH:MM:SS'