24

私はさまざまなタイム ゾーン (および期間) でさまざまなデータベースを使用していますが、通常、問題を引き起こす原因の 1 つは、日付/時刻の定義です。

このため、日付は開始値への参照であるため、計算方法を追跡するために、基準日を保存しようとします。つまり、その特定のコンピューター/データベースでサポートされている最小の日付。

よく見れば、これは 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 で基準日を計算する同様の方法、つまり、サポートされている最小の日付であり、すべての計算の基準となる値はありますか?

datetypeの説明から、サポートされている最小の日付は紀元前 4713 年であることがわかりますが、SQL Server で行うように、この値をプログラムで (たとえば、書式設定された日付文字列として) 取得する方法はありますか?

4

2 に答える 2

12

最も古いタイムスタンプは「-infinity」です。これは特別な値です。反対側は、特定のタイムスタンプより後の「無限」です。

これをプログラムで取得する方法がわかりません。NULL を使用する場合と同じように、ハードコードされた値を使用するだけです。つまり、クライアント側で無限大を処理する必要があります。

于 2013-12-03T04:15:49.507 に答える