8

タイムスタンプ値 (形式: 2012-11-19 14:29:50.0) をBIGINT値 (形式: 2012111315041650= YYYYMMDDhhmmss) に変換する必要があります。のみを受け入れるテーブルの列に現在の時刻を挿入する必要がありますBIGINT

Squirrel SQL クライアント バージョン 3.3.0 を使用しています。私が今使っているクエリは

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

値を手動で入力する代わりに、またはを形式として値BIGINT_DATEに変換したいCURRENT_TIMESTAMPNOW()BIGINTYYYYMMDDHHMISS

何かのようなもの

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

この方法で実現可能かどうか教えてください

これで私を助けてください。

ありがとう

4

7 に答える 7

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'))

datetime から 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

Oracle の場合: 以下のように使用to_charおよびto_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 に答える
-1

SQLサーバー; GETDATE()あなたと交換Column name

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