8

我需要将时间戳值(格式:)转换为2012-11-19 14:29:50.0BIGINT(格式:2012111315041650= YYYYMMDDhhmmss)。我需要在只接受的表的列中插入当前时间BIGINT

我正在使用 Squirrel SQL 客户端版本 3.3.0。我现在使用的查询是

INSERT INTO table1 (BINGINT_DATE, TIMESTAMP_DATE) 
VALUES (2012111315041650, CURRENT_TIMESTAMP); 

BIGINT_DATE我不想手动输入值,而是将CURRENT_TIMESTAMPor转换NOW()BIGINT值作为格式YYYYMMDDHHMISS

就像是

INSERT INTO table1 (BINGINT_DATE, TIMESTAMP_DATE) 
VALUES ("CONVERT(CURRENT_TIMESTAMP,BIGINT)", CURRENT_TIMESTAMP); 

让我知道这样做是否可行

请帮我解决一下这个。

谢谢

4

7 回答 7

2

For Postgres you can use:

INSERT INTO table1 (BINGINT_DATE, TIMESTAMP_DATE) 
VALUES (to_char(current_timestamp, 'yyyymmddhh24miss')::bigint, CURRENT_TIMESTAMP); 
于 2017-04-13T06:03:02.343 回答
1

要将时间戳值转换为 bigint 值(以秒为单位),您可以这样做:

SELECT (EXTRACT(EPOCH FROM TIMESTAMP '2019-04-02T14:56:39.009'))::bigint -- -> 1554216999

要将时间戳值转换为 bigint 值(以毫秒为单位),您可以这样做:

SELECT ((EXTRACT(EPOCH FROM TIMESTAMP '2019-04-02T14:56:39.009'))::numeric * 1000)::bigint -- -> 1554216999009

如果要将列的所有时间戳值转换为表到同一表的另一列,可以运行此查询(以毫秒为单位):

UPDATE $table_name$ SET $column_with_values_bigint$ = (EXTRACT(EPOCH FROM $column_with_values_timestamp$)::numeric * 1000)::bigint

希望这有帮助。

于 2019-09-20T08:44:54.050 回答
0

对于 Oracle:用途to_charto_number功能如下

    TO_NUMBER(TO_CHAR('2012-11-19 14:29:50.0', 'YYYYMMDDHHMISS'))

对于 MySQL:使用DATE_FORMAT&CONVERT如下:

  CONVERT(DATE_FORMAT('2012-11-19 14:29:50.0'', '%Y%M%d%H%i%s'), UNSIGNED BIGINT) 
于 2012-11-20T16:22:15.553 回答
0

以下内容将为您提供(我认为)您所追求的:

DECLARE @TM VARCHAR(50) = '2012-11-19 14:29:50.0'


SELECT (CAST(SUBSTRING(@TM,1,4) AS INT) * 10000000000)
     + (CAST(SUBSTRING(@TM,6,2) AS INT) * 100000000)
     + (CAST(SUBSTRING(@TM,9,2) AS INT) * 1000000)
     + (CAST(SUBSTRING(@TM,12,2) AS INT)* 10000)
     + (CAST(SUBSTRING(@TM,15,2) AS INT)* 100)
     + (CAST(SUBSTRING(@TM,18,2) AS INT))

但是,对于其他人提到的整体问题,可能会有更好的解决方案,如果您提供更多细节,我们可能会建议一个不那么肮脏的替代方案。

于 2012-11-20T16:35:18.310 回答
0

您可以在 MS SQL 上尝试类似的操作:

从 bigint 到 datetime:

select dateadd(s, convert(bigint, '<bigint value like 1477958400000>') / 1000, convert(datetime, '1-1-1970 00:00:00'))

从日期时间到 bigint:

select cast(datediff(s, convert(datetime, '1-1-1970 00:00:00'), convert(datetime, '<datetime value like 11-01-2016>')) as bigint)* 1000

干杯

于 2016-11-09T22:24:54.373 回答
0

日期时间到 BIGINT;

SELECT CONVERT(BIGINT, FORMAT(CURRENT_TIMESTAMP, 'yyyyMMddHHmmss'))

或者

SELECT CONVERT(BIGINT, FORMAT(GETDATE(), 'yyyyMMddHHmmss'))

BIGINT 到 DATETIME;

SELECT CONVERT(DATETIME, FORMAT(20191220213340, '####-##-## ##:##:##'))
于 2019-12-20T18:35:15.547 回答
-1

数据库服务器;替换GETDATE()为您的Column name

SELECT CONVERT(bigint,
       CONVERT(VARCHAR(12) , GETDATE() ,112) +  
       REPLACE(CONVERT(VARCHAR(8) , GETDATE() ,108),':',''))
于 2012-11-20T16:38:25.143 回答