2016-07-26 9 views
1

R POSIXlt 개체를 SQL datetime을 반환 할 적절한 T-SQL 쿼리로 재구성해야합니다. 필자는 POSIXlt를 double로 변환 한 다음이 double을 SQL datetime으로 사용하는 방법이 있어야한다고 생각하지만 정확히 수행 할 방법을 알 수는 없습니다. 그러나 이것은R POSIXlt에서 T-SQL datetime으로 변환

select CONVERT(datetime, convert(varchar(10), 1469491570)); 

: 그 후

date = as.POSIXlt(Sys.time()) 
date_num = as.double(date) 

내가 date_num (1,469,491,570)의 내용을 복사 무슨 일이 일어나는지 확인하기 위해 다음과 같은 SQL 쿼리에 붙여 넣기를 시도 : 여기에 내가 시도 것입니다 내가 임의의 숫자가 아닌 날짜의 문자열 표현을 기대하기 때문에 예상 한 것 같은 오류가 발생합니다 ...

편집 : POSIXlt를 몇 가지 틱 또는 밀리 초로 변환 할 수있는 것을 찾고 있습니다. , 말하자면, 1900 년이 번호를 사용하여 T-SQL 날짜 시간.

+0

함수'julian (x, origin = as.Date ("1970-01-01"), ...)'는 POSIX 객체를 지정된 출발점까지의 일 수로 변환 할 수있다. 초 또는 밀리 초 수로 변환하십시오. – Dave2e

+0

@ Dave2e는 실제로 내가 원했던 것입니다. 답변으로 게시해야합니다. – doubleOK

답변

0

기능 :

julian(x, origin = as.Date("1970-01-01"), ...) 

가 지정한 원점 일수에 POSIX 개체를 변환 할 수는 당신은 초 (밀리 초)로 변환 할 수 있어야한다 예를 들어

. :

as.numeric(julian(as.Date("2016-07-25"))) 

는 1970년 1월 1일 (유닉스 시간의 시작)에서 1만7천7일 또는 Windows 시간의 시작 가까이에서

as.numeric(julian(as.Date("2016-07-25"), origin = as.Date("1900-01-01"))) 

또는 4만2천5백74일이다.

0

"날짜"에 대해 계속 이야기하고 있지만 참조 날짜 이후 작은 간격으로 기간을 원하기 때문에 약간의 차이가 있습니다. 이것을 시도하십시오 :

 date = as.POSIXlt(Sys.time()) 
     date_num = as.numeric(as.POSIXct(date)) # should now be seconds from MN 1970-01-01 

더 많은 것을주의하십시오 Sys.time()는 POSIXct 종류이었을 것입니다. 이에 따르면 format에서 볼 수있는 것과 정확히 같은 형식의 TSQL datetime이 있습니다. 'format'인수의 기본값을 사용하는 POSTST : https://msdn.microsoft.com/en-us/library/ms186724.aspx이므로 수신하는 열의 적절한 클래스 정의로 시도 할 수도 있습니다 (

).
date = format(as.POSIXlt(Sys.time())) 
date  # now a character value 
#[1] "2016-07-25 18:48:08"