基本上我想插入一个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()。问题是,我不知道如何做到这一点。
答案 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()具有一些很棒的功能,但它不是一个高性能的