簡體   English   中英

SQL 將時間戳中的秒數轉換為 integer

[英]SQL casting seconds in time stamp to an integer

我正在嘗試將秒數從數據集中的時間戳變量轉換為 integer。 到目前為止,我已經把它歸結為 substring,它只輸出時間戳的秒數,但無論出於何種原因,無論我在嘗試時引用什么索引,我都無法擺脫最后的字母“Z” substring 以便我可以將值轉換為 integer。 我已經包含了我的數據的屏幕截圖以及我嘗試對下面的值進行子串化。

時間欄

輸出

到目前為止,這是我的 output,有人可以幫忙嗎?

假數據

mydata <- data.frame(time = "2018-09-07T01:07:14.599Z")

編輯:我沒有注意到substringsubstr的別名,我在此處更改了文本以反映這一點。

substr和別名substring都將返回字符串的長度作為最后一個參數。 文檔

substr(X,Y,Z) function 返回輸入字符串 X 的 substring,它以第 Y 個字符開頭,長度為 Z 個字符。 ...

這與使用startend的一些(非sqlite)類似子字符串的實現形成對比,您的代碼適用於這些實現。

sqldf::sqldf("select substr(time, 18, length(time)-18) from mydata")
#   substr(time, 18, length(time)-18)
# 1                            14.599

不過,我不知道您為什么要在其中引入sqldf :雖然它很好,但通過幾種不同的方法在 R 中執行此操作幾乎肯定會快得多:

### notice that this is start,end not start,length
substr(mydata$time, 18, nchar(mydata$time)-1)
# [1] "14.599"

format(as.POSIXct(mydata$time, format="%Y-%m-%dT%H:%M:%OSZ"), format = "%OS3")
# [1] "14.598"             # the 598-vs-599 thing is due to floating-point IEEE-754

as.POSIXlt(mydata$time, format="%Y-%m-%dT%H:%M:%OSZ")$sec
# [1] 14.599               # numeric, not string

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM