我正在尝试在日期列上连接两个表,唯一的问题是一个日期格式化为整数,它是1970-01-10(unixepoch)的天数。另一个日期格式化为MM / DD / YYYY格式的日期。什么功能允许我通过将日期添加到unixepoch来实质上转换数字日期?我已尝试过以下查询,但它会将所有日期覆盖为1970-01-01或产生错误。
INNER JOIN table3 AS T3
ON T3.date = DATE(T1.date, 'unixepoch')
数据库中的一些随机例子
更新:我已使用以下Select语句将T1.Date转换为DATE,仍在寻找如何转换'文本' MM / DD / YYYY T3.Date为了加入
SELECT DATE('1970-01-01', '+' || T1.Date || ' day') FROM T1
答案 0 :(得分:0)
您可以使用以下连接逻辑:
FROM table1 AS T1
INNER JOIN table3 AS T3
ON substr(T3.Date,7) || substr(T3.Date,1,2) || substr(T3.Date,4,2) =
datetime(T1.date, 'unixepoch')
请注意,虽然以MM/DD/YYYY
格式将日期存储为文本很糟糕,但将日期存储为不同的格式可能同样糟糕。
答案 1 :(得分:0)
日期/时间功能是高度特定于数据库的。但是,我会将unix epoch格式转换为日期:
from table1 t1 join
table3 t3
on t1.date = date '1970-01-01' + t3.date * interval '1 day'
我应该注意,Unix纪元通常是指自1970-01-01以来的秒数或毫秒数,但可以在interval
表达式中轻松调整。
以上是ANSI SQL。因此,它可能只在Postgres中编写。但是其他数据库中也有类似的功能,只是语法不同。