2012-02-22 3 views
0

저는 엑셀 시트를 생성하기 위해 cfspreadsheet를 사용하고 있습니다. 이 날짜입니다 열 몇 가지가 있으며, 다음과 같이 표시됩니다spreadsheetFormatColumn을 사용하여 열을 날짜로 포맷하려면 어떻게해야합니까?

1988-09-19 00:00:00.0 

내가 년/월/일 형식으로 표시하도록 서식을하고 싶습니다. 스프레드 시트 형식 열을 사용하여 시도 :

<cfset spreadsheetFormatColumn(s, {dataformat="m/d/yyyy"}, 8) /> 

하지만 아무것도 변경되지 않습니다. coldfusion을 사용하여 컬럼을 어떻게 포맷 할 수 있습니까?

+0

이다 (당신의 자신의 날짜 열의 이름을 넣어 inv_date로 표현 두 곳이 있다는 것을 참고) 그리고 시트를 어떻게 채우고 있습니까? – Leigh

+0

@Leigh - 저는 CF9를 사용하고 있습니다. "spreadsheetAddRows"및 쿼리 개체를 사용하여 시트를 채 웁니다. – froadie

+0

9.x.x 정식 버전이란 무엇입니까? 업데이트 1에는 몇 가지 변경 사항이있었습니다. 이전에는 항상 형식을 고려하지 않았습니다. 따라서 해결 방법을 사용해야합니다. (의례 노트, 나는 회의에 바로 도망 가야한다 :). – Leigh

답변

1

의견에서 언급 한 Leigh가 coldfusion 버그 인 것 같습니다. SQL 서버 쪽에서 날짜를 varchars로 변환하여이 문제를 해결했습니다 (convert(varchar, myDateField, 101) 사용).

0

이것은 버그는 아니지만, 스프레드 시트 함수를 사용하여 셀에 넣은 값은 float이어야하며 "12/25/2012"와 같은 날짜 문자열이 필요하지 않습니다.

플로트는 내 연구 Excel에서 1/1/1900 00:00:001 취급 발견 신기원, 이후의 일 수를 표현한다. 그러나 other odd results out there도 있었는데 때로는 신기원이 하루나 이틀 정도라고 말했습니다.

내가 to represent this in Oracle을 발견하는 방법은 다음과 같습니다

SELECT (TRUNC(inv_date) - TO_DATE('1899-12-30', 'yyyy-mm-dd')) 
      + TO_NUMBER(TO_CHAR(inv_date, 'SSSSS'))/86400 AS InvcDateAsFloat 

전체 CF 버전은 무엇

+1

나는 동의하지 않는다. OP가 문자열이 아닌 날짜/시간 객체를 사용하는 것처럼 들립니다. 'now()'와 같은 날짜 객체는 이미 내부적으로 숫자이며 POI로 잘 동작합니다. 그래서 아무 이유도 없습니다 * 날짜 개체 *는 CF로 상자에서 즉시 작동 할 수 없습니다. – Leigh

+0

리, 어쩌면 당신 말이 맞아. 버그 일 수 있습니다. 내 말씨가 바뀌 었어. 나는 또한 내 db에서 날짜/시간 열을 사용하고 있었는데 OP와 같은 줄에 있다고 생각했습니다. – sugardaddy

+0

그래, 날짜/시간 값은 "있는 그대로"작동해야합니다 (분명히 그들은하지 않습니다). Btw, Windows의 경우 Excel은 1을 '1/1/1900'로 취급하므로 위의 날짜 논리를 다시 확인해야 할 수 있습니다. Mac의 [이전 버전] (http://support.microsoft.com/kb/303216)에 대한 기본 정보는 1900 년 대신 1904 날짜 시스템으로 기본 설정되어 있습니다. – Leigh

관련 문제