请选择 进入手机版 | 继续访问电脑版
wenzi1
中级会员   /  发表于:2020-2-27 15:24  /   查看:2187  /  回复:8
外联数据库:sql server
怎么把日期字段用字段公式转为数值
如:2020/2/27转为43888

8 个回复

Eric.Liang讲师达人认证 悬赏达人认证 活字格认证
超级版主   /  发表于:2020-2-27 17:43:47
推荐
wenzi1 发表于 2020-2-27 16:33
还有一个办法就是奖罚表增加一个日期+工号的字段,但生产环境奖罚表已经有数据了。

其实OADATE的值就是日期距离1899-12-30日相差的天数。你可以通过sql DATEDIFF去计算。
SELECT DATEDIFF(day,'1899-12-30',日期)
回复 使用道具 举报
Eric.Liang讲师达人认证 悬赏达人认证 活字格认证
超级版主   /  发表于:2020-2-27 15:57:12
推荐
你是想做什么操作呢?两个日期的差值?
回复 使用道具 举报
Eric.Liang讲师达人认证 悬赏达人认证 活字格认证
超级版主   /  发表于:2020-2-27 16:15:37
推荐
wenzi1 发表于 2020-2-27 16:05
考勤表里有个文本字段,日期+工号,其中日期是用数值存的,如:43888h0001。想用奖罚表里日期+工号关联考勤 ...

43888肯定是sqlite的日期对吧,你可以做个视图
通过YEAR(字段) || "-" || MONTH(字段) || "-" || DAY(字段)   先将4388转化为yyyy-mm-dd的文本
然后再拿这个视图和sql server 的字段去关联
由于yyyy-mm-dd这个是文本,所以,你可以再处理下sqlserver里的日期,让两者保持一致
回复 使用道具 举报
wenzi1
中级会员   /  发表于:2020-2-27 21:11:04
推荐
Eric.Liang 发表于 2020-2-27 17:43
其实OADATE的值就是日期距离1899-12-30日相差的天数。你可以通过sql DATEDIFF去计算。
SELECT DATEDIFF( ...

谢谢提供思路,没有用sql实现,还是用活字格的公式字段解决了,DATEDIF("1899-12-30",[奖罚日期],"d")&工号,公式字段得出结果是:43888H0001,是我想要的结果,就可以关联了。感谢~!!

评分

参与人数 1金币 +66 收起 理由
Simon.hu + 66 赞一个!

查看全部评分

回复 使用道具 举报
wenzi1
中级会员   /  发表于:2020-2-27 16:05:03
3#
本帖最后由 wenzi1 于 2020-2-27 16:09 编辑

考勤表里有个文本字段,日期+工号,其中日期是用数值存的,如:43888h0001。想用奖罚表里日期+工号关联考勤表(考勤表里有班次,想定位班次),但字段公式日期不能转为数值。

回复 使用道具 举报
wenzi1
中级会员   /  发表于:2020-2-27 16:26:29
6#
本帖最后由 wenzi1 于 2020-2-27 16:27 编辑
Eric.Liang 发表于 2020-2-27 16:15
43888肯定是sqlite的日期对吧,你可以做个视图
通过YEAR(字段) || "-" || MONTH(字段) || "-" || DAY(字 ...

43888不是sqlite,只用了一个sql server,没有用自带的数据库,43888H0001,是在写入的时候用日期+工号产生的,写入到考勤表的文本字段。奖罚表写入时没有这个日期+工号的字段,本来先用字段公式用"&"实现的,但出来的是27 02 2020 00:00:00,也想过两个表的加字段公式,结果字段公式不能关联字段公式。所以没有办法用你说的方法。因为43888H0001,是一个字段
回复 使用道具 举报
wenzi1
中级会员   /  发表于:2020-2-27 16:33:12
7#
还有一个办法就是奖罚表增加一个日期+工号的字段,但生产环境奖罚表已经有数据了。
回复 使用道具 举报
Eric.Liang讲师达人认证 悬赏达人认证 活字格认证
超级版主   /  发表于:2020-2-28 09:25:21
10#
wenzi1 发表于 2020-2-27 21:11
谢谢提供思路,没有用sql实现,还是用活字格的公式字段解决了,DATEDIF("1899-12-30",[奖罚日期],"d")&工 ...

不客气,问题解决了就好
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部