我在多個不同時區(以及時間段)使用不同的數據庫,以及通常會產生問題的一件事是日期/時間定義。PostgreSQL中支持的最早時間戳
由於這個原因,並且由於日期是對起始值的引用,爲了跟蹤它的計算方式,我嘗試存儲基準日期;即:在該特定計算機/數據庫中支持的最低日期;
如果我看得很清楚,這取決於RDBMS和類型的特定存儲。 在SQL Server中,我找到了幾種計算這個「基準日期」的方法;
SELECT CONVERT(DATETIME, 0)
或
SELECT DATEADD(MONTH, 0, 0)
,甚至這樣的轉換:
DECLARE @300 BINARY(8)
SET @300 = 0x00000000 + CAST(300 AS BINARY(4))
set @dt=(SELECT CAST(@300 AS DATETIME) AS BASEDATE)
print CAST(@dt AS NVARCHAR(100))
(其中@dt是一個日期變量)
我的問題是,是不是也有類似在PostgreSQL中計算基準日期的方法,即:是所有計算基礎上支持的最小日期的值?
從date
type的描述中,我可以看到支持的最小日期是4713 BC,但是有沒有像在SQL Server中那樣以編程方式獲取此值的方法(例如作爲格式化的日期字符串)?
你可以在SQL Server中稱這個「0 date」爲基準日期,但如果你認爲它也是支持的最小日期(並且從你的措辭看起來確實如此),那麼你錯了。它將轉換爲'1900-01-01','smalldatetime'是唯一的日期/時間類型,它不能處理早於此日期的日期。可以說是更廣泛使用的'datetime'支持的日期可以低至'1753-01-01',而更新的類型'date','datetime2','datetimeoffset'支持低至'0001-01-01'的值,僅爲FYI。 –
由於我正在尋找一個參考,而不是最小值(儘管我儘管最小值可以作爲參考...),我會堅持這一點:select to_timestamp(0):: date; – doublebyte