【发布时间】:2014-07-11 17:59:54
【问题描述】:
我希望能够做类似的事情
SELECT cast(my_date_col AS int) FROM my_table;
我想获取 MonetDB 内部使用的整数,即,如果您查看 BAT 结构并在 MonetDB 的 GDK 中的代码中获取适当的元素,您会找到的值。现在,AFAICT,这个内部值是自纪元以来的天数,即“第 0 年”的 1 月 1 日(因此第 2 年的 1 月 3 日将是 366+365+2 = 732)。
我能做到的最好的事情是
SELECT my_date_col AS int - cast('1-1-1' AS date) - 366 FROM my_table;
因为 MonetDB 不接受“零年”日期。这是一个相当丑陋的黑客,我想做得更好。帮帮我?
【问题讨论】:
-
我在monetdb docs 中没有看到任何表明它支持纪元数据类型的内容。你有参考吗?
-
@MikeSherrill'CatRecall':我不确定你的意思。 Epoch(在此上下文中)是您计算时间或日期的时间点,作为 usecs 或 msecs 或天或诸如此类的偏移量。在传统的 UNIX 系统上,纪元是 1970 年 1 月 1 日。
-
"Epoch" 本质上是一个整数。日期本质上不是整数,并且不能在标准 SQL 中转换为整数。您是否只是想获取从 1970-01-01 到 my_date_col 的天数?
-
@MikeSherrill'CatRecall':(已编辑)嗯,是的,有点,但不是 1970-01-01,而是 MonetDB 内部使用的任何东西。我相信是 1 月 1 日,“第 0 年”。
标签: sql date integer representation monetdb