2017-10-23 21 views
0

두 테이블 사이의 행 선택 1503381651490과 같이 bigInt 유형으로 날짜를 저장하는 MSSQL Server 테이블이 있습니다. 이제 2017-01-01에서 2017-03-28 사이의 created_time 행을 선택하고 싶습니다. 어떻게해야합니까?bigint with adddate

감사합니다.

+1

여기서 [시간 값에 BIGINT로부터 전환] (시작 https://stackoverflow.com/questions/3650320/convert-from- bigint-to-datetime-value) – Valerica

+0

올바른 열 데이터 형식을 사용하십시오 ... – jarlh

+0

@jarlh이 DB는 나를위한 것이 아닙니다 –

답변

0

예 I는이 문제를 해결하여 :

SELECT "chdt"."CHANGEID" AS "Change ID",  "chdt"."CREATEDTIME" AS "Created 
Date", "chdt"."TITLE" AS "Title" FROM "ChangeDetails" "chdt" 
WHERE dateadd(s,("chdt"."CREATEDTIME"/1000),'1970/01/01') >= '2017/10/01' 
AND (dateadd(s,("chdt"."CREATEDTIME"/1000),'1970/01/01') <= '2017/10/05') 
0

다른 사람이 제안했듯이 올바른 형식으로 datetime을 저장해야합니다.

select * 
from your_table 
where created_time between datediff(minute,'1990-1-1','2017-01-01') 
         and datediff(minute,'1990-1-1','2017-03-28') 
1

먼저 당신이 필터를 적용하기 위해 Datebigint 필드를 변환해야합니다 : 저장된 값을 가정 지금은

는 UNIX 타임 스탬프, 당신은 유닉스 타임 스탬프에 필요한 날짜 범위를 변환 할 수 있습니다 . 다음 변환을 사용할 수 있습니다.

10000000 * 24 * 60 * 60 = 864000000000 

SELECT CAST((bigintvalue - 599266080000000000)/864000000000 AS DATETIME) AS DateTimeConv; 

그런 다음 변환 된 날짜 입력란에 필터를 적용 할 수 있습니다.

SELECT CAST((created_time - 599266080000000000)/864000000000 AS DATETIME) AS DateTimeConv 
FROM Table1 
WHERE DateTimeConv < MaxDateValue 
     AND DateTimeConv > MinDateValue; 
+0

식을 데이터 형식 datetime으로 변환하는 산술 오버플로 오류입니다. –