[英]Extract (year from timestamp) in MonetDB
我嘗試從monetdb中的時間戳中提取年份
select extract(year from ts), ts from orders;
但是這個查詢顯然會返回false結果:
| year | ts |
----------------------------
| 17935405 | 1441695291096 |
| 18245391 | 1441695601082 |
| 18331748 | 1441695687439 |
如果TS
列的數據類型只是紀元時間戳,即1970-01-01 00:00:00.000
的毫秒數,則需要在EXTRACT
工作之前將其轉換為時間類型。 根據這個鏈接 :
convert函數稱為
epoch(int)
。 還有一個新的函數紀元(timestamp),它返回自紀元以來的秒數。
由於我無法在沒有MonetDB實例的情況下驗證這一點,我研究了一下,這看起來更加丑陋,但更有可能從紀元時間獲得時間戳(基於這篇文章 ):
select TIMESTAMP '1970-01-01 00:00:00' + interval CAST(ts/1000 AS STRING) seconds from orders;
因此,如果這是有效的,完整的解決方案將是這樣的
select EXTRACT(YEAR from (TIMESTAMP '1970-01-01 00:00:00' + interval CAST(ts/1000 AS STRING) seconds)) from orders;
注意:語法最有可能因為我沒有要測試的MonetDB實例
編輯:添加CAST(...作為STRING)根據此鏈接我希望這適用於像ts/1000
這樣的算術沒有問題...
以下將有效。
select extract(year from (TIMESTAMP '1970-01-01 00:00:00' + CAST(1441695291096/1000 AS STRING)));
...的回報:
2015
...和這個:
select extract(year from (TIMESTAMP '1970-01-01 00:00:00' + CAST(1481767624000/1000 AS STRING)));
...的回報:
2016
所以對於你的查詢:
select extract(year from ts), ts from orders;
...嘗試:
select extract(year from (TIMESTAMP '1970-01-01 00:00:00' + CAST(ts/1000 AS STRING))) as "Year" from orders;
......它應該有效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.