企业级理解数据库日期字段类型设置为 bigint的好处

  • • 发表于2019-12-09 23:13:58.0
  • • 作者 小徐同学
  • • 326 次浏览
  • • 0 条评论
  • • 最后编辑时间 2019-12-12 15:59:45.0
  • • 来自 [笔 记]

原创声明:本文为作者原创,未经允许不得转载,经授权转载需注明作者和出处

这两天尝试在新的系统,把日期字段(createTime & updateTime..)设置成bigint(Long)类型,把时间按yyyyMMddHHmmss入库。 然后写了前端后端的交互,确实体验挺好

多数据库适配友好(假如有的话),就像查询oracle的时间范围,就是to_char一大段,真的非常脑残加恶心,用Long类型,可以非常直观认知的写出高精度的时间范围查询

例如:查询2019-10-01 下午三点到五点的数据

select * from table where create_time >=20191001150000 and create_time <= 20191001170000

随便一个开发不用动脑筋就能写出来,心智负担非常低,转行警告风险大大降低

后台代码日期业务处理方便,别问为什么方便,问就是转行警告

入参方便,讲道理字符串yyyyMMddHHmmss入参怎么都比日期入参方便些,不过也得看MVC框架,例如Spring就要加注解标注日期类型格式。

输出方便: 无论用什么mvc框架,几乎都得默认json输出格式为yyyy-MM-dd HH:mm:ss 然后再交给前端处理~ 这里就不用

跟前端交互:感觉差不多,反正到table组件还是得重新渲染时间格式
这里做下vue+antd处理日期的代码笔记 应该是最佳实践了

//全局过滤方法
Vue.filter('dateformat', function (dataStr, pattern) {
  if (!pattern) {
    pattern = 'YYYY-MM-DD'
  }
  return moment(dataStr, 'YYYYMMDDHHmmss').format(pattern)
})

//Table等组件渲染

 <!-- 处理日期 -->
  <span
    slot="dateformat"
    slot-scope="text"
  >
    {{ text | dateformat }}
  </span>


//form表单提交处理

 function handleSubmit () {
  const {
    form: { validateFields }
  } = this
  this.confirmLoading = true
  validateFields((errors, values) => {
    if (!errors) {
      if (values.effectiveDate) {
        // 进行转换
        values.effectiveDate = values.effectiveDate.format('YYYYMMDDHHmmss')
      }
      if (values.id != null) {
        update(values).then(res => {
          setTimeout(() => {
            this.visible = false
            this.confirmLoading = false
            this.form.resetFields()
            this.$emit('ok', values)
          }, 1000)
        })
      } else {
        save(values).then(res => {
          setTimeout(() => {
            this.visible = false
            this.confirmLoading = false
            this.form.resetFields()
            this.$emit('ok', values)
          }, 1000)
        })
      }
    } else {
      this.confirmLoading = false
    }
  })
}


//回显处理
function edit (record) {
  this.visible = true
  this.$nextTick(() => {
    record.effectiveDate = moment(record.effectiveDate, 'YYYYMMDDHHmmss')
    this.form.setFieldsValue(record)
  })
},
评论区(共0条评论)
0条评论
Ctrl+Enter
作者

Michael

小徐同学

帖子:43 回复:0

全栈搬运工

作者详情》
Top