[SQL] 어떻게 C #을에서 날짜가 제대로 SQL로 전달하는 방법?
SQL어떻게 C #을에서 날짜가 제대로 SQL로 전달하는 방법?
는 형식으로되어 있습니다에 나는 테이블과 날짜 - 시간을 가지고 :
2011-07-01 15:17:33.357
내가 형식의 날짜 시간을 얻고 개체에) (A로 .toString을 할 때 나는 C #을 날짜 시간을 복용하고 있습니다 :
04/07/2011 06:06:17
나는 (즉, 올바른 날짜 시간을 선택) 내가 제대로 나는 그것이 작동하지 않는 우리의 코드에있는 SQL을 실행하면 때문 통해 올바른 날짜 시간을 통과하는 방법 궁금하네요. 나는 SQL 프로파일 러를 사용할 수 없습니다.
이 코드입니다 :
//looks to if a user has had any activity in within the last time specified
public bool IsUserActivitySinceSuppliedTime(int userId, DateTime since)
{
//get everything since the datetime specified [usually 5 hours as this is
//how long the session lasts for
string sql = "SELECT * FROM tbl_webLogging WHERE userid = @userid AND DateAdded > @sinceDateTime";
SqlParameter sinceDateTimeParam = new SqlParameter("@sinceDateTime", SqlDbType.DateTime);
sinceDateTimeParam.Value = since;
SqlCommand command = new SqlCommand(sql);
command.Parameters.AddWithValue("@userid", userId);
command.Parameters.Add(sinceDateTimeParam);
using (SqlDataReader DataReader = GetDataReader(command))
{
if (DataReader.HasRows)
{
return true;
}
else
{
return false;
}
}
}
최신 정보*******************
나는 데이터에서 다음을 실행 한 :
SELECT * FROM tbl_webLogging
WHERE userid = 1
AND DateAdded > '2011-07-01 07:19:58.000'
과
SELECT * FROM tbl_webLogging
WHERE userid = 1
AND DateAdded > '04/07/2011 07:19:58'
하나는 (53 개) 기록을 다른 반환 69 개 레코드를 반환합니다. 어떻게 이럴 수있어? 내가 SQL에 C #을에서 날짜 시간 (2011-04-07 7시 19분 58초)를 통과 할 때 어떤 기록을 전혀 표시하지!
해결법
-
==============================
1.당신은 이미이 작업을 이미해야, 날짜 시간의 값을 가진 날짜 시간 매개 변수를 사용하여 제대로 일을했습니다. 즉 여기에서 사용되지 않기 때문에 - ToString () 잊어 버려요.
당신은 이미이 작업을 이미해야, 날짜 시간의 값을 가진 날짜 시간 매개 변수를 사용하여 제대로 일을했습니다. 즉 여기에서 사용되지 않기 때문에 - ToString () 잊어 버려요.
차이가 있다면, 두 환경 사이의 서로 다른 정밀 할 가능성이 높습니다; 아마도 (? 어쩌면 초) 반올림을 선택하고 그것을 사용합니다. 또한 마음 UTC / 지역 / 알 수없는 유지합니다 (DB는 "종류"날짜의 개념이 없습니다; .NET 않습니다).
데이터베이스에 날짜 시간이 그러한 형식이 아닌 참고; 그것은 당신의 거짓말을 보여주는 당신의 쿼리 클라이언트입니다. 인간은 당신이 표시 한 날짜가 40723.6371916281과 동일 함을 실현하지 않는이 이상한 경향이 있기 때문에, 그것은 숫자로 저장됩니다 (그리고 심지어는 구현 세부 사항입니다). 어리석은 인간. 을 통해 단순히 "날짜"로 처리하여, 당신은 어떤 문제를 얻지한다.
-
==============================
2.나는 C # 및 SQLSERVER 관련된 많은 문제가 있었다. 나는 다음을 수행 결국 :
나는 C # 및 SQLSERVER 관련된 많은 문제가 있었다. 나는 다음을 수행 결국 :
또한 반드시 모든 시스템이 동일한 시간대에 실행하는 것이합니다.
두 번째는 "7 월 4 일"동안 당신이 얻을 다른 결과 집합에 대해서, 첫 번째 예는 "7월 우선"입니다 ...
또한, 두 번째 예제는 "4 월 7 일"로 해석 될 수있다, 그것은 (내 솔루션이 문제에서 고통을하지 않습니다) 서버 현지화 구성에 따라 달라집니다.
편집 : 24 시간 시계 시스템에 반대 AM / PM과 시스템에 정확한 시간을 캡처하지 않는 것으로 HH는 HH로 대체되었습니다. 아래의 주석을 참조하십시오.
from https://stackoverflow.com/questions/6570621/how-to-pass-datetime-from-c-sharp-to-sql-correctly by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] SQL Server 데이터베이스에서 스크립트의 모든 데이터 (0) | 2020.06.06 |
---|---|
[SQL] 넓은 키가 큰 MySQL의 긴에서 모양 변경 데이터 / (0) | 2020.06.06 |
[SQL] "..에와"사이의 차이 "에 .. 어디"SQL 왼쪽에서 가입? [복제] (0) | 2020.06.06 |
[SQL] 같은 '%'NULL 값을 허용하지 않습니다 (0) | 2020.06.06 |
[SQL] VARCHAR를 값을 변환 할 때 변환 int 데이터 형식 '단순한'를 실패한 (0) | 2020.06.06 |