【问题标题】:convert date to integer in postgresql在postgresql中将日期转换为整数
【发布时间】:2015-04-17 22:17:15
【问题描述】:

我正在尝试将日期(日期类型)转换为 int。这个 int 应该类似于自 1900 年 1 月 1 日以来的天数。如何在 postgresql 中得到这个?在excel中,当我将日期与字符串连接时,我会自动得到这个。 示例:2011/11/01 转换为 int 为 36831

【问题讨论】:

    标签: sql postgresql date integer


    【解决方案1】:

    只需减去两个日期:

    select date '2011-11-01' - date '1900-01-01'
    

    结果将是天数。

    手册中的更多详细信息:
    http://www.postgresql.org/docs/current/static/functions-datetime.html

    【讨论】:

    • 一百年大约是三万六千五百天吧?所以 OP 的算术在 1900 年到 2011 年之间计算出大约 101 年。我认为我不相信这个答案。我更愿意相信 PostgreSQL 的减法运算符。
    • @MikeSherrill'CatRecall':不确定“不信任”是指哪个答案。但你是对的:对于我的示例,Postgres 返回 40846
    • 来自 OP:"示例:2011/11/01 转换为 int 为 36831"
    • 谢谢你的回答...但是很困惑,在excel中,我可以使用这个函数:=datevalue("2011/11/01") 来获取序列号为36831。但是,在postgre中......我尝试将减法作为您的答案,结果不是36831当我尝试这个时:(选择日期'2011-11-01'-日期'1900-01-01')在postgre中+2,结果与 36831 相同。为什么它必须添加 2...我不确定我的查询:-(
    • @nidazakiy 显然 Excel not 使用 1900-01-01 作为基础。如果您运行select date '2011-11-01' - 36831,您将看到它的计算结果为1910-12-30,所以我猜这就是Excel 使用的。顺便说一句:名称是 Postgres 或 PostgreSQL,但 不是 Postgre
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-17
    • 2018-10-16
    • 2022-07-07
    • 1970-01-01
    相关资源
    最近更新 更多