1***@qq.com
1***@qq.com
  • 发布:2020-12-17 21:08
  • 更新:2021-08-27 22:27
  • 阅读:1962

unicloud数据库中,聚合操作如何操作时间戳?

分类:uniCloud

我看了文档,好像只能操作date类型,可是我的数据都是保存的时间戳,请问怎样通过数据库的操作来将时间戳转换为日期字符串格式?

2020-12-17 21:08 负责人:DCloud_uniCloud_WYQ 分享
已邀请:
DCloud_uniCloud_WYQ

DCloud_uniCloud_WYQ

用 dateFromParts 可以实现,转成Date类型之后再操作

  • 1***@qq.com (作者)

    感谢,已经实现了

    2020-12-29 20:55

  • p***@icloud.com

    请问如何实现?dateFromParts 这个里面没有传入时间戳的值啊

    2021-07-16 16:29

  • 行云客

    回复 p***@icloud.com: // 时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数


    // dateBase为起点ISODate


    let dateBase = $.dateFromParts({year: 1970, month: 1, day: 1, hour: 8, minute: 0, second: 0, millisecond: 0, timezone: 'Asia/Shanghai'})


    // 时间戳转日期 = 起点ISODate + 13位的时间戳(即包括毫秒)


    // timestamp为时间戳Number型字段,如果是13位就直接是'$timestamp',如果是10位,则要乘以1000,即$.multiply(['$timestamp', 1000])


    let timstampToDate = $.add([dateBase, $.multiply(['$timestamp', 1000])])


    return db.collection('xxxx').aggregate()


    .addFields({  

    formatDate: $.dateToString({

    date: timstampToDate,

    format: '%Y-%m-%d %H:%M:%S.%L',

    timezone: 'Asia/Shanghai'

    })

    })


    .end()

    2021-08-27 22:24

  • 不将就1207

    回复 1***@qq.com: 怎么解决的?

    2021-12-05 16:04

行云客

行云客 - 行云客CRM,助力企业销售全流程精细化、数字化管理,从线索转入客户,转化商业机会,进入销售漏斗,推进机会赢单,设定回款计划,为销售严控把握每一步成交要点,实现业绩飞速增长!可定制开发

// 时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数  

// dateBase为起点ISODate  

let dateBase = $.dateFromParts({year: 1970, month: 1, day: 1, hour: 8, minute: 0, second: 0, millisecond: 0, timezone: 'Asia/Shanghai'})  

// 时间戳转日期 = 起点ISODate + 13位的时间戳(即包括毫秒)  

// timestamp为时间戳Number型字段,如果是13位就直接是'$timestamp',如果是10位,则要乘以1000,即$.multiply(['$timestamp', 1000])  

let timstampToDate = $.add([dateBase, $.multiply(['$timestamp', 1000])])  

return db.collection('xxxx').aggregate()  

    .addFields({  

    formatDate: $.dateToString({  

        date: timstampToDate,  

        format: '%Y-%m-%d %H:%M:%S.%L',  

        timezone: 'Asia/Shanghai'  

    })  

})  

.end()
行云客

行云客 - 行云客CRM,助力企业销售全流程精细化、数字化管理,从线索转入客户,转化商业机会,进入销售漏斗,推进机会赢单,设定回款计划,为销售严控把握每一步成交要点,实现业绩飞速增长!可定制开发

聚合查询

let dateBase = $.dateFromParts({year: 1970, month: 1, day: 1, hour: 8, minute: 0, second: 0, millisecond: 0, timezone: 'Asia/Shanghai'})  
            res = await dataBase.aggregate()  
                .match({  
                    fuZeRenId: params.u_id,  
                    create_date: dbCmd.and(dbCmd.gte(params.sTime), dbCmd.lte(params.eTime))  
                })  
                .project({  
                    date: $.add([dateBase, $.multiply(['$create_date'])])  
                })  
                .project({  
                    formatDate: $.dateToString({  
                        date: '$date',  
                        format: '%Y-%m-%d'  
                    })  
                })  
                .group({  
                    _id: '$formatDate',  
                    num: $.sum(1)  
                })  
                .end()  
            break;

该问题目前已经被锁定, 无法添加新回复