計算列を作成したい。
参加日と呼ばれる列を持つテーブル1というテーブルがあります。
今日の日付と [参加日] 列を減算して Months(int) の値を返す列を作成したいと考えています。
私はこれを使用しました: (datediff(month,[DateJoining],getdate()))
そして、それは完全にうまく機能しますが、計算された型の列がnull型ではない理由がわかりません
どんな助けでも大歓迎です。
計算列を作成したい。
参加日と呼ばれる列を持つテーブル1というテーブルがあります。
今日の日付と [参加日] 列を減算して Months(int) の値を返す列を作成したいと考えています。
私はこれを使用しました: (datediff(month,[DateJoining],getdate()))
そして、それは完全にうまく機能しますが、計算された型の列がnull型ではない理由がわかりません
どんな助けでも大歓迎です。
SQL Server がこのように動作する理由を説明することはできません。また、理解以外に重要な理由を理解することもできません (この理由を説明できる人がいるかどうかわからないため、実際には理解できません)。int の場合、オーバーフローを防止している可能性があると思います (この場合は明らかに不可能ですが)。
列が null 可能でないことをシステム カタログに確認してもらいたい場合は、次のようにします。
ALTER TABLE dbo.whatever ADD column_name
AS (ISNULL(datediff(month, DateJoining, getdate()), 0));
注意: このトリックは では機能しませんCOALESCE
。