문제

시간 만 값을 삽입하려고하지만 다음 오류를 받으십시오.

  • 예 { "SQLDATETIME OVERFLOW. 1/1/1753 12:00:00 AM과 12/31/9999 사이 여야합니다. 11:59:59 PM."} System.Exception

프론트 엔드에서 시간은 "TimeEdit"컨트롤을 사용하여 위아래로 화살표를 사용하여 선택됩니다. SQL Server의 테이블에는 필드가 소형으로 설정되어 있습니다. 시간 만 저장하면됩니다. 다음을 사용하여 데이터를 앱으로 반환합니다.

ID, 변환 (char (5), Timefrom, 8)를 선택하여 Timefrom, 변환 (char (5), timeto, 8)를 dbo의 시간대로 선택하십시오.

테이블에만 시간을 전달하려면 어떻게해야합니까?

편집 ~ 솔루션 Euardo와 Chris에 따라 솔루션은 시간 전용 문자열 대신 DateTime 문자열을 전달하는 것이 었습니다. 나는 결과를 포맷했다 시간 형식 "G"사용.

감사

도움이 되었습니까?

해결책

범위 (예 : 1970 년 1 월 1 일)에있는 날짜를 선택하고 삽입 한 모든 것에 사용하십시오.

다른 팁

날짜를 1/1/1753으로 설정하여 MSSQL에서 DateTime의 날짜 최소값입니다. 그런 다음 저장할 시간을 추가 할 수 있습니다. 물론 가치를 얻어야 할 때마다 이것을 고려해야하지만 일부 도우미로 포장 할 수 있습니다. 또는 MSSQL 2008을 사용하여 New Time Datatype을 사용할 수 있습니다.

시간을 추적하는 경우, 필요한 과립력 (초, 분, 시간, ...)에서 자정부터 자정부터 오프셋으로 저장하는 것에 대해 생각하십시오. 그런 다음 적절한 times.from ?? () 메소드를 사용하여 코드에서 Times -span으로 변환 할 수 있습니다. 다른 방법으로 돌아가려면 timespan.total을 사용할 수 있습니까 ?? 그리고 필요한 경우 잘라냅니다. 수동 쿼리를 수행 해야하는 경우 시간/분/초를 동등한 오프셋으로 변환하는 SQL 기능을 작성할 수 있습니다.

나는 이것을 DateTime을 사용하고 임의의 날을 선택하는 것보다 이것을 선호하고 필드의 목적을 명확하게 만들어 혼란을 줄입니다.

SQL에는 시간이 없으며 DateTime 만 있습니다.

당신의 목적을 위해, 나는 이와 같은 것을 사용하여 시간 부분 만 반환 할 것입니다.

SELECT (GETDATE() - (CAST(FLOOR(CAST(GETDATE() as FLOAT)) AS DateTime)))

getDate ()가 필터링하려는 DateTime입니다.

데이터베이스에서 시간을 설정할 때 '01/01/1901 '또는 '01/01/1753'을 시간에 추가해야합니다.

DateTime으로 작업 할 때는 캐스트를 사용하지 않고 Varchar로 변환하지 마십시오. 부동 수치 작업을 고수하십시오.

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