2009-12-28 2 views
0

기본적으로 테이블의 모든 레코드를 반환하는 뷰가 있으며 ISO의 날짜가되어야하는 'isodate'열을 추가합니다 -체재.SQL Server 2005 : smalldatetime을 varchar로 변환하면 view와 'normal'쿼리에서 다르게 동작합니다.

CREATE VIEW [dbo].[v_bedarfe] 
AS 
    SELECT *,convert(varchar(16),datum,20) As isodat FROM bedarfe 
GO 

"datum"-field는 smalldatetime입니다. isodat에서 쿼리의 결과가 있었다 ... '의외', 그래서 점을 명확하게하기 위해, 나는 노력이 :

Screenshot of result from query

와 보이는 : 주도

select top 10 datum,isodat,convert(varchar(16),datum,20) As isodat2 from v_bedarfe 

아주 틀렸어.

그래서 나는 내가 잘못 기대가 또는 여기에 뭔가를 '학대'하고 생각하지만, 내가 ... 내가 잘못 일을 할 수 있는지 볼 수 없습니다 어떻게 다시 여기 궤도에 도착하는 어떤 제안을 부탁드립니다

감사합니다

마이클
뷰에서 *이 위험 사용

+0

내 스크린 샷보기 올바르게 표시되지 않습니다. –

+0

@Steve, 예, 스크린 샷이 제대로 표시되지 않았지만 이제는 Andomar가 고쳐 준 것 같습니다.) @Andomar : 감사합니다! :) 그것을 보여주기 위해 당신은 무엇을 했습니까? – MBaas

+0

@MBaas : 이미지가 포함 된 웹 페이지에 연결하고 있습니다. 오른쪽 이미지를 클릭하고 (.PNG로 끝난) 링크를 복사하여 이미지 링크 – Andomar

답변

1

(미리보기가 표시되지 않습니다이를 게시 할 때 스크린 샷이 제대로 표시 바랍니다). 테이블 정의가 변경되면 * 뷰가 열을 잘못 매핑 할 수 있습니다. &을 삭제하고 *없이보기를 다시 만들고 문제가 해결되는지 확인하십시오.

P. 변환 20 실제로는 ODBC 표준, yyyy-mm-dd hh:mi:ss(24h), MSDN page을 참조하십시오.

+0

아우트로 사용했습니다. - 감사합니다. – MBaas

0

변환시 마지막 parm은 출력 형식입니다.

20> YYYY-MM-DD HH = MI : SS (24)

131 => 일/월/년 HH : MI는 : SS : mmmAM는

MS SQL convert()