7

DATETIME&INTEGERとDATE&INTEGERの関係は一貫していますか?

これは正常に実行されます。

DECLARE @Yesterday DATETIME = GETDATE();
SELECT @Yesterday-1;

これがそうであるように:

DECLARE @Yesterday DATE = GETDATE();
SELECT @Yesterday;

このエラー:

DECLARE @Yesterday DATE = GETDATE();
SELECT @Yesterday-1;

integerからタイプを安全に減算できますが、からは減算できdatetimeませんdate
この動作の理由は何ですか?

4

2 に答える 2

7

実際、それは非常に一貫しています。DATETIMESQLServerの以前のエディションから継承されたタイプです。2008年版以降、DATETIME2が導入され、整数の加算/減算の可能性がなくなりました。あなたはまだそれをDATETIME遺産として行うことができます。

DATE、2008年からのようDATETIME2に、このタイプの場合、数値の加算/減算も禁止されています。

これにより、エラーが発生します。

DECLARE @Yesterday DATETIME2 = GETDATE();
SELECT @Yesterday-1;

だからすべてが大丈夫です:)。

于 2013-03-22T12:09:31.687 に答える
1

したがって、これはより良いかもしれません:

declare @Yesterday DATE = DATEADD(d, -1, getdate())
select @Yesterday
于 2013-03-22T12:12:53.543 に答える