日期格式转化的问题

0
有个疑问,想了很久。
 
bi为了方便终端用户使用,包装了很多sql语句,这些sql很难优化啊,比如:时间格式,我们数据库中的时间格式是“时间戳”,必须用数据库中的函数才能转化为正常的日期格式,这个操作如果写在映射层或物理层,必然在数据库中会出现如下格式: where from_unixtime(hiredate)='1999-01-01',这种格式,这样hiredate上的索引将无法使用。 难道让我建立函数索引??? 
 
如果不是在bi,这问题很好解决,where hiredate=unix_timestamp('1999-01-01'),就可以了,但这在bi 模型上写不出啊!!
 
怎么办呢???
已邀请:
0

匆匆 - 拔剑浴血幕,只为红颜故、BIEE高级工程师 2015-03-27 回答

为啥不在数据库里把格式弄好啊,你抽数据的时候就可以转嘛,前台改多麻烦,实在不行的话 前台cast char 型 在substring 吧
0

zhuqibs 2015-03-27 回答

你所指的是bi数据库的格式已经是datetime格式了,对吗
0

zhuqibs 2015-03-27 回答

其实,我这个问题是由时间维度来的
 
我们有一张订单表,表中有个字段是order_create_time,而且还是时间戳,我想把它做成时间维度,
 
那就需要有年列,月列,日列等等,那是不是我要把这个列用data_format和from_unixtime,把它扩展成为一张有三到四列的表,用这个表来做时间维,我看教程中,数据库中有个时间表,但我的数据库没有,那我是不是要做个视图来代替这个时间表,而这个视图我就打算从order_create_time这个列派生出来
 
0

zhuqibs 2015-03-27 回答

问了阿里的人,他们说,数据库中普遍都是存储时间戳的, oracle bi居然这个都考虑不到,是不是太弱了,这不是逼人用函数索引,而且,我还不知道mysql是不是有函数索引

要回复问题请先登录注册