날짜 시간의 최소값, 즉 1753 년 1 월 1 일을 반환하는 SQL Server 함수를 찾고 있습니다. 해당 날짜 값을 스크립트에 하드 코딩하지 않고 싶습니다.
그런 것이 있습니까? (비교를 위해 C #에서는 그냥 할 수 DateTime.MinValue)
있거나 직접 작성해야합니까?
Microsoft SQL Server 2008 Express를 사용하고 있습니다.
날짜 시간의 최소값, 즉 1753 년 1 월 1 일을 반환하는 SQL Server 함수를 찾고 있습니다. 해당 날짜 값을 스크립트에 하드 코딩하지 않고 싶습니다.
그런 것이 있습니까? (비교를 위해 C #에서는 그냥 할 수 DateTime.MinValue)
있거나 직접 작성해야합니까?
Microsoft SQL Server 2008 Express를 사용하고 있습니다.
CONVERT(smalldatetime, 0)
에 대한 smalldatetime
.
답변:
다음 과 같이 최소 날짜 값을 반환 하는 사용자 정의 함수 를 작성할 수 있습니다 .
select cast(-53690 as datetime)
그런 다음 스크립트에서 해당 기능을 사용하고 변경해야하는 경우이를 수행 할 수있는 곳은 한 곳뿐입니다.
또는 더 나은 가독성을 위해 선호하는 경우이 쿼리를 사용할 수 있습니다.
select cast('1753-1-1' as datetime)
예제 기능
create function dbo.DateTimeMinValue()
returns datetime as
begin
return (select cast(-53690 as datetime))
end
용법
select dbo.DateTimeMinValue() as DateTimeMinValue
DateTimeMinValue
-----------------------
1753-01-01 00:00:00.000
'1753-1-1'
훨씬 낫습니다-53690
cast('17530101' as datetime)
지역 문제도 피할 수 있으며 -53690보다 약간 더 읽기 쉽습니다.
당신은 본 적이 SqlDateTime 개체를 ? SqlDateTime.MinValue
최소 날짜를 얻으려면 사용 하십시오 (1753 년 1 월 1 일).
다음은 최소 날짜 값을 얻는 빠르고 읽기 쉬운 방법입니다.
참고 : 이것은 결정적 함수 이므로 성능을 더욱 향상시키기 위해 반환 값에 WITH SCHEMABINDING을 적용하는 것이 좋습니다.
함수 만들기
CREATE FUNCTION MinDate()
RETURNS DATETIME WITH SCHEMABINDING
AS
BEGIN
RETURN CONVERT(DATETIME, -53690)
END
함수 호출
dbo.MinDate()
예 1
PRINT dbo.MinDate()
예 2
PRINT 'The minimimum date allowed in an SQL database is ' + CONVERT(VARCHAR(MAX), dbo.MinDate())
예제 3
SELECT * FROM Table WHERE DateValue > dbo.MinDate()
예 4
SELECT dbo.MinDate() AS MinDate
예 5
DECLARE @MinDate AS DATETIME = dbo.MinDate()
SELECT @MinDate AS MinDate
1753 년 1 월 1 일이 아니지만 cast ( ''as datetime)를 선택하면 다음과 같이 표시됩니다. 1900-01-01 00 : 00 : 00.000은 SQL 서버에서 기본값을 제공합니다. (어쨌든 나에게는 더 초기화되지 않은 것 같습니다)
SELECT CONVERT(DATETIME, 0)
)이지만 datetime이 SQL Server에서 보유 할 수있는 실제 최소값은 실제로 OP가 작성한 1753입니다. 미국은 또한 그레고리력으로 전환하고 SQL 서버 등없는 일을 처리 할 필요가 없다의 그 SELECT CONVERT(DATETIME, -53690)
제공 1753-01-01 00:00:00.000
과 SELECT CONVERT(DATETIME, -53691)
오버 플로우에 대한 오류를 제공합니다.
이것은 SQL Server에서 최소 날짜를 얻는 데 사용하는 것입니다. 세계화 친화적입니다.
CREATE FUNCTION [dbo].[DateTimeMinValue]()
RETURNS datetime
AS
BEGIN
RETURN (SELECT
CAST('17530101' AS datetime))
END
다음을 사용하여 전화 :
SELECT [dbo].[DateTimeMinValue]()
범위는 datetime
이전 버전과의 호환성을 손상 시키므로 변경되지 않습니다. 따라서 하드 코딩 할 수 있습니다.
convert
있지만 GetMinDate()
함수 정의에 대해 자세히 알아보아야 합니다. 따라서 코드를 유지해야한다면 convert
변형을 선호합니다 .
convert
있지만 1753-1-1
.