2016-09-25 66 views

回答

0

列值似乎不是一個TimeStamp。 使用下面的腳本將值設置爲日期時間。

SELECT credits,amount,city, 
        CONVERT(DATETIME,LEFT(created_date,8) 
        +' '+SUBSTRING(created_date,9,2) 
        +':'+SUBSTRING(created_date,11,2) 
        +':'+RIGHT(created_date,2)) Created_Date 
    FROM YourTable 
+0

解決了我的問題。謝謝。 –

+0

@Abhinav快樂編碼! –

0

是'epoch'類型的created_date?你是否試圖在SQL數據庫或業務邏輯中使用日期時間格式?如果它在業務邏輯中,則取決於您使用的語言。我很樂意提供幫助,但我不完全理解用例。如果你可以提供更多的信息,可以幫助我們幫助你!

乾杯!

2

您想要轉換的時間被稱爲Unix timestamp,這意味着自1970/01/01以來經過了多少秒鐘。在這種情況下,您將不得不使用DATA函數,該函數將花費總秒數並將其添加到1970/01/01。

在SQL它通過以下方式完成:

select DATEADD(s, dateTimeInSeconds, '19700101') 

哪裏s是秒和dateTimeInSeconds是你的約會的價值; '19700101'是一個起點。

+0

你確定它不是沒有任何分隔符的日期時間嗎? – scsimon

0

它看起來不像unix時間戳,但沒有一些字符的日期時間(只剩下數字)。

要獲得MySQL的 「真正的」 時間戳使用:UNIX_TIMESTAMP()

要轉換 「真正的」 時間戳在MySQL中的datetime使用:FROM_UNIXTIME()

要將列轉換爲datetime使用:

CONCAT(SUBSTR(created_date, 1, 4), 
     '-', 
     SUBSTR(created_date, 5, 2), 
     '-', 
     SUBSTR(created_date, 6, 2), 
     ' ', 
     SUBSTR(created_date, 7, 2), 
     ':', 
     SUBSTR(created_date, 11, 2), 
     ':', 
     SUBSTR(created_date, 13, 2)) 
+0

問題被標記爲SQL Server不是MYSQL只是一個擡頭 – scsimon

1

試試這個:

SELECT 
    create_date, 
    CONVERT(DATETIME, STUFF(STUFF(STUFF(x.create_date, 13, 0, ':'), 11, 0, ':'), 9, 0, ' ')) AS create_date_AsDT 
FROM (SELECT '20160925151849') AS x(create_date) 

Demo - online

注意:基本上它會在mm和ss之間插入:分隔符,介於hh和mm之間,並且還會在DT和TM之間插入(空格(1))。因此,'20160925151849'變成'20160925 15:18:49'。此最終值是一個有效的DT字符串,可以毫無問題地從VARCHAR TO DATETIME轉換(獨立於SET LANGUAGE/DATEFORMAT設置)。

相關問題