0

計算列を作成したい。

参加日と呼ばれる列を持つテーブル1というテーブルがあります。

今日の日付と [参加日] 列を減算して Months(int) の値を返す列を作成したいと考えています。

私はこれを使用しました: (datediff(month,[DateJoining],getdate()))

そして、それは完全にうまく機能しますが、計算された型の列がnull型ではない理由がわかりません

どんな助けでも大歓迎です。

4

1 に答える 1

1

SQL Server がこのように動作する理由を説明することはできません。また、理解以外に重要な理由を理解することもできません (この理由を説明できる人がいるかどうかわからないため、実際には理解できません)。int の場合、オーバーフローを防止している可能性があると思います (この場合は明らかに不可能ですが)。

列が null 可能でないことをシステム カタログに確認してもらいたい場合は、次のようにします。

ALTER TABLE dbo.whatever ADD column_name 
  AS (ISNULL(datediff(month, DateJoining, getdate()), 0));

注意: このトリックは では機能しませんCOALESCE

于 2012-08-10T12:53:36.817 に答える