如何使用bigint作为getdate()

时间:2017-09-11 11:40:54

标签: sql-server

基本上我想插入一个periot项目来创建新角色,在角色创建后7天到期。

期间项目表就是这样:

[id]
  ,[UserGUID]
  ,[CharacterName]
  ,[ItemType]
  ,[ItemCode]
  ,[EffectCategory]
  ,[EffectType1]
  ,[EffectType2]
  ,[Serial]
  ,[Duration]
  ,[BuyDate]
  ,[ExpireDate]
  ,[UsedInfo]
  ,[BuyDateString]
  ,[ExpireDateString]
  ,[SetExpire]

这是我想要使用的stamnet:

            DECLARE @memb_guid int
        SELECT @memb_guid = memb_guid FROM MEMB_INFO WHERE memb___id = @AccountID
        INSERT INTO dbo.IGC_PeriodItemInfo(UserGUID,CharacterName,ItemType,ItemCode,EffectCategory,EffectType1,EffectType2,Serial,Duration,BuyDate,ExpireDate,UsedInfo,BuyDateString,ExpireDateString,SetExpire)
        VALUES(@memb_guid, @Name,1,6700,61,6,7,159171,604800,?,?,1,GETDATE(),DATEADD(DAY, 7, GETDATE()),0)

那么“?”在哪里?登录statemant,这些类型是bigint,我需要将它们用作getdate()和dateadd()。问题是,我不知道如何做到这一点。

2 个答案:

答案 0 :(得分:0)

尝试,

DECLARE @sdate char(10) = '20/10/2016';
SELECT CONVERT(datetime, @sdate, 103);-- 2016-10-20 00:00:00.000
SELECT CONVERT(bigint,CONVERT(datetime, @sdate, 103));  -- 42661
SELECT CONVERT(datetime,CONVERT(bigint,CONVERT(datetime, @sdate, 103)));--2016-10-20 00:00:00.000


CONVERT(BIGINT,CONVERT(NVARCHAR(30),DATEDIFF(S,'20380119',GETDATE()))

SELECT CONVERT(BIGINT,
LEFT(REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(30),CURRENT_TIMESTAMP,126),'-',''),':',''),'T',''),14))

答案 1 :(得分:0)

如果2012年以上,另一个选项是格式()

示例

Select AsDateTime = GetDate()
      ,AsBigInt   = cast(format(GetDate(),'yyyyMMddHHmmssfff') as bigint)

<强>返回

AsDateTime                AsBigInt
2017-09-11 08:01:38.187   20170911080138187

应该注意的是,Format()具有一些很棒的功能,但它不是一个高性能的