2011-11-07 2 views
2

.net DateTime 개체의 기본값은 컴퓨터가 설정된 모든 형식으로 설정됩니다. 저는 영국 출신이므로 DateTime 객체는 DD/MM/YYYY입니다..net DateTime 개체, MM/DD/YYYY 형식 지정

이것은 일반적으로 문제가되지 않지만 DateTime 개체를 사용하여 현재 시간을 Access 데이터베이스의 레코드 제출에 넣으려고합니다. 액세스 (또는 일반적으로 SQL은 실제로 알지 못합니다)는 날짜가 MM/DD/YYYY 형식으로되어 있어야합니다.

DateTime 개체를 MM/DD/YYYY 형식으로 포맷 할 수있는 방법이 있습니까? 아니면 문자열로 변환하고, 문자열을 바꾸고, 삽입해야합니까?

+0

아마 yyyy-MM-dd 형식 (ISO 8601) –

+3

으로 가야합니다. 실제로 DateTime 필드를 올바르게 사용하는 경우 문자열로의 변환이 없으므로 날짜 형식이 중요하지 않습니다. 연결된 SQL 문자열을 사용하고 있지 않습니까? 그건 나쁠거야. –

+0

Maaaaaaaaaaaaaaaaaaaabebe ... –

답변

5

:이 같은 당신은 DateTime 클래스를 사용하는 경우. 매개 변수 객체를 사용하고 값에 날짜 객체를 지정합니다. 액세스

string mystatment = "Insert into TableName (column1, datecolumn) values (?,?)" 

OleDbCommand cmd = conn.CreateCommand(); 
cmd.Commandtext = mystatement; 
cmd.Parameters.AddWithValue("@column1", mycolumn1variable); 
cmd.Parameters.AddWithValue("@datecolumn", yourDateTimeVariable); 

에 대한

제대로 생산 코드와 함께이 일을하는 경우는 예외 SQL에 대한

using (OleDbConnection conn = new OleDbConnection("connection string")) 
{ 
    using (OleDbCommand cmd = conn.CreateCommand()) 
    { 
     cmd.CommandText = "Insert into TableName (column1, datecolumn) values (?,?)"; 

     OleDbParameter param; 
     param = new OleDbParameter("name", OleDbType.VarChar, 36); // if you know the size of the column specify it 
     param.Value = mycolumn1variable; 
     cmd.Parameters.Add(param); 

     param = new OleDbParameter("mydate", OleDbType.Date); // if you know the size of the column specify it 
     param.Value = yourDateTimeVariable; 
     cmd.Parameters.Add(param); 

     conn.Open(); 
     cmd.ExecuteNonQuery(); //etc 
    } 
} 

이 대신의 이름 @parameters을 사용하는 등 취급이 있는지 확인? 귀하의 진술에 SqlCommand를 대신 사용하십시오.

화면 표시 용인 경우 문화권에 따라 사용자 설정 및 형식을 고려하십시오.

+0

이것에 대한 이유는 무엇입니까? 내가하고 있던 문자열 연결이 정상적으로 끝났습니다. 왜이 방법이 우수할까요? –

+0

당신이 목격했듯이 문자열 형식의 날짜는 위치에 따라 다릅니다. 미국 대 GB/AU 날짜 형식이있는 경우 10 Januaary 및 10 월 1 일을 생각하십시오. –

+0

이 방법을 사용하면 .NET 및 Access에서 무거운 짐을 싣기. 액세스 형식에 관계없이 날짜를 알아낼 수 있습니다. 하게 두다. 이론 상으로는 데이터베이스가 프로그램과 다른 컨텍스트 (문화권)에있을 수 있으므로 삽입을 단일 문화권에 묶고 싶지는 않습니다. 문화적 형식을 하드 코딩하는 것은 좋은 습관이 아닙니다. – MPelletier

0

당신은 DateTime.ToString를 호출 할 수 있습니다 ("MM/DD/YYYY") 그래서 당신은 주위

0

사용 ToString 방법 DateTime 구조로 전환 할 필요가 없습니다 :

using System; 
using System.Globalization; 

string s = DateTime.Now.ToString("MM/dd/yyyy", CultureInfo.InvariantCulture); 
Console.WriteLine(s); 
0

당신이 할 수있는 당신이 날짜 문자열을 사용하지 않는 데이터베이스에 삽입하는 경우

DateTime yourDate = DateTime.Now; 
Console.WriteLine("Your Date: {0}", yourDate.ToString("MM/dd/yyyy")); 
+0

감사합니다. 나는 ToString이 DateTime이 가지고 있던 ToString 우선 순위를 알지 못했고, 그것을 문자열로 변환하고 chop-n-change해야한다고 생각했습니다. –

+0

@SamuelSmith "chop-n-change"가 필요 없습니다. 'DateTime' 클래스는 곰팡이와 함께 매우 쉬운 작업입니다. :) 다행스럽게 도와 줬어. –