문제

이것은 나를 정말로 flumoxed하게 만들었습니다!

  1. DatalAyer Ado.net에서 SQL Server 2008에 연결하면 로그인의 기본 언어는 'British'입니다.
  2. DateTime 열을 DataView로 선택하고 반환합니다.
  3. ASPX Page Databinds
  4. this : < %# string.format ( "{0 : mmm/yyyy}", eval ( "dbperiodfrom")) %>

데이터베이스는 2009/10/01 (yyyy/mm/dd)을 반환합니다. 4 단계의 결과는 Jan2009입니까 ????

웹 서버의 지역 설정은 영국입니다.

이것은 "내 Dev Machine의 작품"입니다. 그러나 생산 시나리오에 배치 될 때 Borked. 내가 무엇을 놓칠 수 있었습니까?

편집하다

따라서 ASP.NET 응용 프로그램에서 SQL Server 2008에 연결하기 위해 사용하는 로그인이 로그인의 속성에서는 기본 언어가 '영국 영어'로 설정되어 있지만 미국 데이터 시간이 발생하는 것으로 보입니다.

문제는 TSQL에서 발생합니다.

SELECT 
    DATEPART(month, CAST('2009.02.01' AS DATETIME))
    ,DATEPART(month, CONVERT(DATETIME, '2009.02.01', 102))

기본 언어가 '영어'로 설정된 Windows 통합 로그인 (관리자)의 출력

2 2

기본 언어가 'British English'로 설정된 ASP.NET에서 사용한 SQL Server 로그인의 출력

1 2

도움이 되었습니까?

해결책

설정에 따라 데이터베이스 자체와 서버에서 로케일 설정을 확인하면 날짜가 로케일 설정에 따라 형식화됩니다. 데이터베이스 서버가 아마도 DB 서버 자체의 지역 설정에서 미국 영어로 설정되었을 것입니다.

이것이 도움이되기를 바랍니다.

다른 팁

데이터베이스 열이 datetime, 그런 다음 전선 위에 오는 것이 무엇입니까? 그렇지 않습니다 실제로 "2009/10/01" - 이진 번호입니다 (대부분의 날짜는 와이어에 있습니다). 따라서 모호성은 없습니다.

나는 그것을 기대한다 어딘가에 당신은 그것을 끈으로 취급하고 있습니다 (아마도 일부는 Parse) - 이것은 필요하지 않아야합니다. 그렇다면, 당신은 그렇지 않습니다 SELECT그것을 a datetime, 그러나 a [n][var]char(x).

관리 스튜디오를 사용하여 데이터베이스에 저장된 가치를 확인하십시오. 또한 MS SQL Server에서 Universal Date 형식은 YYYY-MM-DDTHH : MM : SS.MMM (2009-01-05T10 : 12 : 55.001) 및 YYYYMMDD (20090105)입니다. 데이터베이스에서 어떤 로케일을 사용하든 그 형식은 항상 동일하게 구문 분석되었습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top