找回密码
 立即注册

QQ登录

只需一步,快速开始

lsjmadd@163.com
初级会员   /  发表于:2023-3-8 12:05  /   查看:1765  /  回复:6
1金币
本帖最后由 lsjmadd@163.com 于 2023-3-8 12:08 编辑


如图所示,待办种类是人力资源的我是用新工作流做的,底下设计项目是老工作流做的,这个视图是将两个工作流在mysql里拼在一起作为待办页面使用,但是拼的这个lastdate字段在表格里显示都是日期,但是排序有问题,实际上用lastdate排序,设计项目全部排在了一起,人力的排在了一起,没有按时间排,我尝试了mysql的函数CAST,DATE_FORMAT,都没有办法互相转换,求助如何解决!!谢谢!

附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

最佳答案

查看完整内容

activity时间字段是OLE Automation Date格式,给你个函数转换成datetime格式: CREATE DEFINER=`root`@`%` FUNCTION `zFunc_OADateToDate`(`OADate` double) RETURNS datetime BEGIN DECLARE owhole LONG; DECLARE seltime DOUBLE; DECLARE seldate DATETIME; DECLARE finaldate DATETIME; SET owhole = CAST(OADate AS UNSIGNED)-1; SET seldate = DATE_ADD('1899-12-30 00:00:00', INTERVAL owhole DAY); ...

6 个回复

正序浏览
David.Zhong讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:2023-3-8 16:43:24
7#
啧啧歪 发表于 2023-3-8 12:05
activity时间字段是OLE Automation Date格式,给你个函数转换成datetime格式:

CREATE DEFINER=`root`@` ...

回复 使用道具 举报
数据民工悬赏达人认证 活字格认证
高级会员   /  发表于:2023-3-8 16:17:58
5#
lsjmadd@163.com 发表于 2023-3-8 16:12
没有太明白您的意思,是把整个视图查询一下,写到新表里,double就自动转换成日期格式了?

见谅,没注意看,是外联库视图啊,那就在视图里声明一下这个字段的数据类型,一般都可以统一的
回复 使用道具 举报
lsjmadd@163.com
初级会员   /  发表于:2023-3-8 16:12:22
4#
数据民工 发表于 2023-3-8 16:06
随便写个SQL语句,查询再更新到数据库就好了,内置库就是这样

没有太明白您的意思,是把整个视图查询一下,写到新表里,double就自动转换成日期格式了?
回复 使用道具 举报
数据民工悬赏达人认证 活字格认证
高级会员   /  发表于:2023-3-8 16:06:34
3#
随便写个SQL语句,查询再更新到数据库就好了,内置库就是这样
回复 使用道具 举报
David.Zhong讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:2023-3-8 15:57:59
2#
核心原因是mysql中,老版本的工作流日期字段的字段类型是datetime,新版本的日期字段的字段类型是double,存的数据不一致。
写视图的时候需要转化为一致的数据。
回复 使用道具 举报
最佳答案
最佳答案
啧啧歪
金牌服务用户   /  发表于:2023-3-8 12:05:04
来自 6#
activity时间字段是OLE Automation Date格式,给你个函数转换成datetime格式:

CREATE DEFINER=`root`@`%` FUNCTION `zFunc_OADateToDate`(`OADate` double) RETURNS datetime
BEGIN
        DECLARE owhole LONG;
        DECLARE seltime DOUBLE;
        DECLARE seldate DATETIME;
        DECLARE finaldate DATETIME;

        SET owhole = CAST(OADate AS UNSIGNED)-1;
        SET seldate = DATE_ADD('1899-12-30 00:00:00', INTERVAL owhole DAY);
        SET seltime = (OADate- owhole) * 24 * 60 * 60;
        SET finaldate = DATE_ADD(seldate, INTERVAL seltime SECOND);

        RETURN finaldate;
END

评分

参与人数 1金币 +66 收起 理由
David.Zhong + 66 很给力!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部