이 코드를 작성하고 있습니다. 여기서 dt는 someint와 마찬가지로 함수에 입력됩니다. Exp 열은 Linq를 통해 DateTime으로 제공되는 T-SQL 날짜 열입니다.Linq에서 SQL에 날짜를 추가하는 방법
return (from a in dataContext.TableOfA
where a.name == "Test" &&
a.Exp.Value.AddDays(Convert.ToDouble(Someint)) >= new DateTimeOffset(dt)
select a).First();
C#에서는 날짜 시간에 하루를 두 번 추가 할 수 있습니다. 1.5 일을 더할 수 있다는 의미입니다. T-SQL에서는 1 일 추가 한 다음 12 시간 만 추가 할 수 있습니다. 각 파트에 int를 추가해야합니다. 그래서 Linq가 AddDays를 T-SQL로 변환하면 내 일수를 밀리 초로 변환하고 그 수를 더합니다. 이것은 double이 C#에주는 모든 정밀도를 제공합니다.
여기에 문지르 기가 있습니다. SQL에 도달하면 오류가 발생합니다.
The datepart millisecond is not supported by date function dateadd for data type date
기본적으로 밀리 초를 날짜에 추가 할 수 없습니다. 농담이 아니야. 그런데 어떻게 번역 할 수 있나요? 나는 int 일을 날짜에 추가하려고합니다. 비교 대상인 다른 사람에게 부정적인 것을 추가하려는 경우에만이 작업을 수행하고 싶습니까? 하나에 추가하는 동안 열과 비교하고 싶다면 어떻게해야합니까?
업데이트 1
Keith wrote, A command like datepart(millisecond, 10000, myDate) has been supported in T-SQL since at least SQL Server 2000. This error suggests that whatever database you are using does not support the millisecond date part, which seems strange to me.
나는 그것은 DATE 데이터 유형이 지원되지 않습니다 SQL Server 2008을 사용하고 있습니다. datetime에서 지원됩니다.
적어도 SQL Server 2000 이후 T-SQL에서 datepart (millisecond, 10000, myDate)와 같은 명령이 지원되었습니다.이 오류는 사용중인 데이터베이스가 밀리 초 날짜 부분을 지원하지 않는다는 것을 나타내며 이상하게 보입니다 . – Keith
DATE 데이터 유형에서는 지원되지 않습니다. datetime에서 지원됩니다. –
그게 더 합리적입니다. DB 디자인을 제어 할 수 있다면 간단한 해결책은이 열을 DATE에서 DATETIME으로 변경하는 것입니다. 분명히 당신이이 질문을하고 있다면, 이것은 당신이 통제 할 수있는 것이 아닙니다. – Keith