簡體   English   中英

如何在 SQL 查詢中將日期轉換為時間戳?

[英]How to convert date into timestamp in SQL query?

我正在嘗試將數據從old_table遷移到new_table ,但在舊表中,日期數據類型是datetime ,在新表中,日期數據類型是int並且正在接受時間戳值。

那么如何轉換 sql 查詢中的舊日期,以便將其作為時間戳插入到新表中?

INSERT INTO `new_table` (`id`, `user_id`, `doctor_id`, `message_id`, `type`, `is_message`, `is_note`, `doctor_initials`, `call_status`, `message`, `date_created`, `date_updated`, `day`)
  SELECT id, usid, drid, message_id, type, is_message, is_note, doctor, kall, message, datein, 123, ziua
  FROM `old_table`;

我想要一個 function 將舊日期轉換為值到時間戳,例如在上面的查詢中CONVERT_INTO_TIMESTAMP(datein)

任何幫助將不勝感激。

新表date_created字段接受 unix 時間戳中的值,例如: 1540642765

謝謝

您要查找的函數是UNIX_TIMESTAMP() ,例如

select UNIX_TIMESTAMP('1970-01-01 00:00:00');

在UTC時區給出0。

嘗試UNIX_TIMESTAMP()函數:

INSERT INTO `new_table`
            (`id`,
             `user_id`,
             `doctor_id`,
             `message_id`,
             `type`,
             `is_message`,
             `is_note`,
             `doctor_initials`,
             `call_status`,
             `message`,
             `date_created`,
             `date_updated`,
             `day`)
SELECT id,
       usid,
       drid,
       message_id,
       type,
       is_message,
       is_note,
       doctor,
       kall,
       message,
       Unix_timestamp(datein),
       '123',
       ziua
FROM   `old_table`;  

從文檔中:

如果不帶任何參數調用,則以無符號整數形式返回Unix時間戳(自1970年1月1日00:00:00 UTC以來的秒數)。 如果使用日期參數調用UNIX_TIMESTAMP(),則它將返回自1970年1月1日00:00:00 UTC以來的參數值(以秒為單位)。 date參數可以是DATE,DATETIME或TIMESTAMP字符串,也可以是YYMMDD,YYMMDDHHMMSS,YYYYMMDD或YYYYMMDDHHMMSS格式的數字。 服務器將日期解釋為當前時區中的值,並將其轉換為UTC中的內部值。

SELECT date_part('epoch', CURRENT_TIMESTAMP)::int;

因為這個問題也被標記為 SQL 來這里尋求 SQL/MSSQL 查詢中的時間戳解決方案的人。 可以試試下面

SELECT CAST(DueDate AS TIMESTAMP) "NewDueDate" 

其中DueDate是具有類似日期的列 - YYYY-MM-DD HH:ii:ss 如果您的列是 varchar 類型,那么上面的語法仍然可以正常工作。

暫無
暫無

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

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