developer tip

최소 날짜를 반환하는 SQL Server 함수 (1753 년 1 월 1 일)

optionbox 2020. 9. 25. 07:48
반응형

최소 날짜를 반환하는 SQL Server 함수 (1753 년 1 월 1 일)


날짜 시간의 최소값, 즉 1753 년 1 월 1 일을 반환하는 SQL Server 함수를 찾고 있습니다. 해당 날짜 값을 스크립트에 하드 코딩하지 않고 싶습니다.

그런 것이 있습니까? (비교를 위해 C #에서는 그냥 할 수 DateTime.MinValue)있거나 직접 작성해야합니까?

Microsoft SQL Server 2008 Express를 사용하고 있습니다.


다음 과 같이 최소 날짜 값을 반환 하는 사용자 정의 함수작성할 수 있습니다 .

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

당신은 본 적이 SqlDateTime 개체를 ? SqlDateTime.MinValue최소 날짜를 얻으려면 사용 하십시오 (1753 년 1 월 1 일).


평판 포인트가 불충분하여 받아 들여진 답변에 대해 댓글을 달 수 없어 댓글로 답장이 나옵니다.

select cast('1753-1-1' as datetime)YYYY-MM-DD 형식의 날짜 문자열을 허용하지 않는 지역 설정으로 데이터베이스에서 실행하면를 사용하면 실패합니다.

대신 지정된 datetime 형식과 함께 select cast(-53690 as datetime)또는 a Convert사용하십시오 .


'yyyymmdd'지역 문제를 방지 하려면 날짜를 기본 값으로 입력하십시오 .

select cast('17530101' as datetime)

예, TSQL에 MinDate() = '00010101'.하지만 그러한 운 이 없다면 좋을 것 입니다.


1753 년 1 월 1 일이 아니지만 cast ( ''as datetime)를 선택하면 다음과 같이 표시됩니다. 1900-01-01 00 : 00 : 00.000은 SQL 서버에서 기본값을 제공합니다. (어쨌든 나에게는 더 초기화되지 않은 것 같습니다)


다음은 최소 날짜 값을 얻는 빠르고 읽기 쉬운 방법입니다.

함수 만들기

CREATE FUNCTION MinDate()
RETURNS DATETIME
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

The range for datetime will not change, as that would break backward compatibility. So you can hard code it.


This is what I use to get the minimum date in SQL Server. Please note that it is globalisation friendly:

CREATE FUNCTION [dbo].[DateTimeMinValue]()
RETURNS datetime
AS
BEGIN
  RETURN (SELECT
    CAST('17530101' AS datetime))
END

Call using:

SELECT [dbo].[DateTimeMinValue]()

참고URL : https://stackoverflow.com/questions/3825893/sql-server-function-to-return-minimum-date-january-1-1753

반응형