栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

.Net连接Mysql数据库的Convert Zero Datetime日期问题

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

.Net连接Mysql数据库的Convert Zero Datetime日期问题

网上说在MySQL的时间字段为NULL时,转换出现问题。

Convert Zero Datetime:,当没有设置此属性时,如果Mysql数据库中的datetime列为null的时候,.net在转换时会抛出如下异常:Unable to convert MySQL date/time value to System.DateTime at MySql.Data.Types.MySqlDateTime.GetDateTime()这是因为.net的默认最小日期和Mysql的不匹配,导致转换出错,解决办法就是以上连接串中的(设置Convert Zero Datetime=True)

而我在jnpf 3.2框架下出现了新的问题就是,时间字段抽取不出来

`var list = await _meteringDeviceRepository.AsSugarClient().Queryable(
                (a,b,c) => new JoinQueryInfos(
                    JoinType.Left, a.DeviceId == b.DeviceId,
                    JoinType.Left, a.MeteringTaskId == c.MeteringTaskId))
                .Where((a, b, c) => a.EnabledMark == 0 && a.Deflag == 0 && b.EnabledMark == 0 && b.Deflag == 0 && c.EnabledMark == 0 && c.Deflag == 0)
                .WhereIF(!string.IsNullOrEmpty(input.keyword), a => a.MeteringCode.Contains(input.keyword))
                .WhereIF(queryParam.ContainsKey("DeviceName") && !string.IsNullOrEmpty(queryParam["DeviceName"].ToString()), a => a.DeviceName.Contains(queryParam["DeviceName"].ToString()))
                .WhereIF(queryParam.ContainsKey("DeviceCode") && !string.IsNullOrEmpty(queryParam["DeviceCode"].ToString()), a => a.DeviceCode.Contains(queryParam["DeviceCode"].ToString()))
                .WhereIF(companyId != null, a => a.CompanyId.Equals(companyId))
                //.Where(authorizeWhere)
                .Select((a,b,c) => new
                {
                    MeteringDeviceId = a.MeteringDeviceId,
                    MeteringCode = a.MeteringCode,
                    DeviceId = b.DeviceId,
                    DeviceCode = b.DeviceCode,
                    DeviceName = b.DeviceName,
                    LocationName = b.LocationName,
                    Model = b.Model,
                    DepartmentName = b.DepartmentName,
                    DeviceStatus = b.Status,
                    Accuracy = a.Accuracy,
                    Scope = a.Scope,
                    PermissibleError = a.PermissibleError,
                    MeteringMode = c.MeteringMode,
                    Cycle = a.Cycle,
                    CycleUnit = a.CycleUnit,
                    BeforeTime = a.BeforeTime,
                    Status = c.Status,
                    Responsiblename = c.Responsiblename,
                    NextTime = a.NextTime,
                    CertificateNo = a.CertificateNo,
                    CertificateValid = a.CertificateValid,
                    creatorDate = a.CreateDate
                }).MergeTable().OrderBy(t => t.creatorDate,OrderByType.Desc).ToPagedListAsync(input.currentPage, input.pageSize);

里面的BeforeTime 、creatorDate 等数据库内一定有时间的时间字段抽取出来也为null
是因为我在连接字符中加了这个属性

Allow Zero Datetime=True

这导致了返回的日期会是MySql.Data.Types.MySqlDateTime类型,而不是DataTime,所以在后台程序中转换不成功,成为了null。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/904541.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号