문제

스택 오버플로에서 비슷한 질문을 발견했지만 실제로 질문에 대답하지 않았습니다. ASP.NET 응용 프로그램이 DD/MM/YYYY 날짜를 SQL Server 2005와 동일하게 서식하는지 확인해야합니다.

서버의 날짜 문화 (그것이 호출되는 경우)가 앱을 프로그래밍 한 방법과 일치하는 방법을 어떻게 확인합니까? 특정 데이터베이스 설정 및 OS 설정이 있습니까? 테이블 특정입니까? 나는 내 며칠과 몇 달을 바꾸고 싶지 않습니다.

감사합니다

도움이 되었습니까?

해결책

데이터베이스에서 DateTime을 제거하면 특정 날짜 이후의 진드기 수를 기준으로 DateTime 객체와 같이 배양되지 않은 형식이어야합니다. 문화에 관심이 필요한 값을 문자열로 변환 할 때만 가능합니다. 이 경우 yourdateTimeValue.toString ( "dd/mm/yyyy", cultureInfo.invariantculture)을 사용하여 정보가 올바르게 표시되는지 확인할 수 있습니다.

다른 팁

SqlParameters를 사용하면 ado.net이 나머지를 처리하고 걱정할 필요가 없다고 생각합니다. 게다가, SQL 주입 공격에 대한 방어에도 좋습니다! :)

** SQL DateTime 열은 불가능하고 최소값은 1/1/1753이고 .NET DateTimes는 최소 값이 1/1/0001로 불가능하기 때문에 조심하십시오. **

실제 DateTime 열에서 데이터를 가져 오는 경우 기본적으로 항상 동일한 표준 형식이됩니다. 데이터를 열에 저장하려면 매개 변수에 sqldbtype.dateTime을 지정할 수 있습니다.

나는 이것을 찢었다 http://bytes.com/forum/thread767920.html :

com.parameters.add ( "@adate", sqldbtype.datetime) .value = dateTime.now;

글쎄, 당신이 DB에 DateTime 필드를 유지한다면 걱정하지 않아야합니다.

앱의 날짜를 강력하게 입력하고 (dateTime 변수) DBPARAMETER/SQLPARAMETER로 준비된 명령문을 통해 날짜를 보내는 한 DB가 그대로 가져갑니다.

문자열을 사용하여 날짜를 코드로 유지하는 경우 일부 캐스트는 올바른 값을 보내도록합니다.

string sqlCmd = @"SELECT *
   FROM MyTable
   WHERE MyDateField = CONVERT(datetime, '{0}', 101)";

// assuming myDateString is a string with a date in the local format
sqlCmd = string.Format(sqlCmd,
    Convert.ToDateTime(myDateString).ToString("yyyyMMdd"));

(코드는 못 생겼지 만, 바라건대가 가로 질러 요점을 얻을 수 있기를 바랍니다)

다른 사람들이 언급했듯이, 당신은 문화적으로 DateTimes를 저장하는 한 괜찮을 것입니다. 내가 추천 할 것은 모든 시간을 표준 UTC 시간으로 저장한다는 것입니다. SQL Server 2005 이상에서는 시간대 정보를 저장할 수있는 방법이 없지만 모든 것이 유니버설 시간에 저장되면 시간을 현지 시간으로 전환 할 수 있기 때문에 괜찮을 것입니다.

SQL Server 2008에는 시간 영역을 알고있는 일부 데이터 타입이 있으며 .NET 3.5를 사용하는 경우 시간대 핸들링/변환을 지원하는 도구가 있습니다.

확실히 시간을 보편적 인 형식으로 유지하십시오. 여러 시간 영역에서 일해야한다면 차이가 생길 것입니다.

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