2013-09-01 4 views
1

저는 MySQL과 C#을 처음 사용합니다.My SQL의 날짜 유형

데이터 유형이 Date 인 열에 특정 값을 저장했습니다. 나는 그 시간을 원하지 않았고, 단지 날짜 만 저장했다.

YYYY-MM-DD 그러나

, 나는 내 웹 응용 프로그램에서이 값을 검색 할 때, 그들은 표시됩니다 phpMyAdmin을하거나 MySQL을 명령 줄을 사용하여이 값을보기에 , 나는 형식으로 참조

YYYY-MM-DD HH : MM (시간은 구체적으로 12:00입니다).

왜 이런 일이 발생합니까? 어떻게 이런 일이 일어나지 않도록 할 수 있습니까?

+0

http://www.dotnetperls.com/datetime-format이 정보도보고 싶을 것입니다. –

+0

감사합니다. 북마크 됨. 초보자를위한 매우 유용한 정보 .. –

+0

당신은 환영합니다! :) –

답변

0

을 어떻게 작동하는지 당신은 공부할 수 있습니다 :이 문자열로 값을 반환

select date_format(datecol, '%Y-%m-%d') 

.

+0

감사합니다. 이것은 나를 위해 속임수를했다. 하지만 나는 다음 번에 _DATE_ 대신에 _DATETIME_을 사용할 것이라고 생각합니다. 훨씬 덜 혼란 스럽습니다. –

2

C#에서 날짜 필드를 저장할 때 DateTime 개체를 사용합니다. 이 개체에서는 시간 부분을 지정하지 않으면 기본값이 전역화에 따라 달라집니다.

날짜 시간 당신은 date_format()를 사용하면 데이터를 가져올 때 당신이 좋아하는 형식으로 날짜를 변환 할 수 있습니다 here

+0

하지만 검색된 Date 형식 값을 문자열 (** toString() ** 사용)으로 변환하고 해당 문자열을 인쇄하고 있습니다. 왜 결과 문자열에 시간이 표시됩니까? –

+0

@SinghSiddharth. . . 'toString()'을 호출 할 무렵에 C#에 있고 값은 이미 datetime으로 취급되고 있습니다. –

0

값을 mysql에서 검색해서는 안됩니다. 왜? 하루 추가와 같이 해당 값에 대한 연산을 수행해야하는 경우 다시 구문 분석하여 DateTime으로 다시 입력해야합니다. 문자열 구문 분석은 느릴 수 있으며 날짜와 관련하여 mm/dd/yyyy 및 dd/mm/yyyy 형식의 잘못된 해석과 같은 오류가 발생하기 쉽습니다.

문제는 .NET에 Date 형식이 없다는 것입니다. DateTime 유형 만 있습니다. 따라서 MySQL DATE 유형을로드하면 DateTime의 자정으로 시간 부분이 설정됩니다.

결과를 출력하는 방법을 제외하고는 직접적인 문제가 없습니다. 매개 변수없이 .ToString()을 호출하거나 암시 적으로 문자열로 사용하면 전체 날짜와 시간의 결과를 얻게됩니다. 원하는 형식을 나타내는 매개 변수를 제공하기 만하면됩니다.

매개 변수없이 일반 "G" 형식을 사용 중입니다. 이 내용은 here 설명서에 설명되어 있습니다. 즉

:

yourDateTime.ToString() == yourDateTime.ToString("G") 

당신에 대한 모든 다른 형식의 가능한 herehere를 읽을 수 있습니다.그냥 날짜를 원하는 경우 특히

, 그때는 아마이 작업을 수행 할 수 : 귀하의 의견을 바탕으로

yourDateTime.ToString("d") 

대신이 일을해야합니다

MySQL의 쿼리 :

SELECT Gbstartdate FROM TblGbDef 

C 번호 :

+0

감사합니다. '! 나는 이것 모두를 시도 할 것이다. 이것은 내 작업을 바로 처리하는 방법입니다. _My SQL query_ : SELECT date_format (Gbstartdate, '% Y- % m- % d') FROM TblGbDef'DateTime gb_start_date = DateTime.ParseExact (datareader [0] .ToString()), "yyyy-MM-dd", System.Globalization.CultureInfo.InvariantCulture); "TimeSpan days_elapsed_ts = current_date - gb_start_date;"int days_elapsed = days_elapsed_ts.Days; ' –

+0

@SinghSiddharth - 업데이트 된 답변보기. –