の時間部分をSQL Serverに格納しないようにするにはどうすればよいですか?つまり、2011-01-01 00:00:00.000
という値がある場合は、2011-01-01
のみ保存しますか?SQL Server 2005でのみ日付を格納する
日付部分のみが保存されていることを確認します。
の時間部分をSQL Serverに格納しないようにするにはどうすればよいですか?つまり、2011-01-01 00:00:00.000
という値がある場合は、2011-01-01
のみ保存しますか?SQL Server 2005でのみ日付を格納する
日付部分のみが保存されていることを確認します。
DateTimeデータ型は、常に日付と時刻を格納します。したがって、CONVERT/CASTを使用して特定の形式を取得するか、YEAR()、MONTH()またはDAY()メソッドを使用して、必要に応じて日付の詳細を切り分けます。
最も簡単な解決策は、時間部分をユーザーに公開しないことです。ただし、実際に日付部分だけが格納されていることを確認する必要がある場合は、値を格納する前に、時間部分を真夜中/正午/一定の時間に強制することができます。
組み込みのDATETIMEデータ型は、日付と時刻の両方のデータを格納します。日付部分のみを指定した場合、時刻は12:00:00かそのようなものになります。
面白い話:日付と時刻フィールドがある場所で、日付と時刻が両方とも格納されていたデータベースが1回見えましたが、データの半分だけが使用されていました。何人かの人はばかげたことをします:)
どちらの計算列を追加:誰かが挿入しようとするとエラーを発生させるためにあなたのdateonly列にCHECK
を作り、
INSERT
INTO mytable (dateonly)
VALUES CONVERT(DATETIME, CONVERT(CHAR(8), GETDATE(), 112), 112)
:
dateonly AS CONVERT(DATETIME, CONVERT(CHAR(8), date_with_time, 112), 112)
または右挿入時にあなたの日付を切り捨てを非切り捨て値:
CHECK (dateonly = CONVERT(DATETIME, CONVERT(CHAR(8), date_with_time, 112), 112))
日付をyyyMMdd
整数値。
または、列の時間部分を無視してデフォルトにすることができます。値を挿入/更新するときにのみ、日付を入力するようにしてください。 –