質問

データベース:(1988、1990などなど)

私は年を挿入する必要があります。私は、日付や日時を使用する場合 データ型は、それがエラーを示しています。どのデータ型、私が使用する必要があります。

役に立ちましたか?

解決

あなたがデータベースに年間保存する必要がある場合は、

は、整数データ型を使用したいのいずれかまたはDateTimeデータ型((あなたが死んだだけで年間保存に設定されている場合)は、基本的に1である日付を格納伴うことになりますフォーマットの/ 1990分の1夜12時00分00秒)。

他のヒント

を定期的に4バイトINTがビッグへの道である、スペースの無駄です!

あなたが使っているものをデータベース言わないので、私は、特定のデータ型をお勧めすることはできません。誰もがあなたが必要とするより方法よりである、「整数を使用する」と言ったが、4バイトでほとんどのデータベースストアの整数れます。あなたがより良いスペースを節約するであろう、2バイトの整数(SQL Server上SMALLINT)を使用する必要があります。

ねえ、あなたは、MySQLでの年()のデータ型を使用することができます これは、2桁または4桁の形式で提供されます。

注:値は、4桁の形式で許可:1901 2155の値は2桁の形式で許可さ:70〜69、1970から2069までを表す年

MSSQLで「年」を格納することで、理想的にあなたがそれをやっていると、その「年」の意味は、アプリケーションとデータベースに何がどうなるかに依存します。ことで、ここで述べるいくつかのことがあると述べました。 MSSQL 2012のように年には、「データ型」はありません。それだけで2バイト(あなたの要求をINT 4バイトの2を節約する)であるように私は、SMALLINTを使用して傾くだろう。あなたの制限は、あなたが(SQL Serverの2008R2のとおり)32767より古い年を持つことができないということです。私は実際にSQLは、10万年になりましおろか32767 MSSQL年()関数は、INTにデータ型「DATE」を変換しないとあなたはINTを考慮することができるから、選択したデータベースになるとは思いません。私が言ったように、それはあなたがデータを取得している場所、それが起こっている場所によって異なりますが、SMALLINTだけで問題ないはずです。 INTはやり過ぎだろう...あなたは私が上またはコードの要件は、INTの形でそれを必要とする場合(例えば、既存のアプリケーションとの統合)に述べたような他の理由がない限り。ほとんどのSMALLINTはうまくする必要があります。

ちょうど1年、何もありませんか? なぜ単純な整数を使わないのでしょうか?

あなたが保存するために必要なのは一年である場合は、

は、整数を使用してください。日付基づく計算があるだろうと思う場合にも、日時を使用することができ、この列を照会しながら、

ストレージは、問題の唯一の一部であってもよいです。どのようにこの値は、クエリで使用されるのでしょうか?

それは別の日時データ型と比較することになるだろうか、すべての関連する行も数値を持っていますか?

どのような要件の変更に対処するのでしょうか?どのように簡単にあなたの小さなタイムスライスで年間交換する要求に反応するだろうか?すなわち、今、彼らはそれが四半期ごとに分類したいですか?

数値型は簡単にスタートのような含むものと結合し、(12月31日/ Xに1/1 / X)日付を停止するルックアップテーブルを持つことで、日付時刻のクエリで使用することができ、など。

私は良い選択を整数または整数の任意のサブタイプを使用しているとは思いません。遅かれ早かれ、あなたはそれへの操作のような他の日付を行う必要があります。また、2019年のスペースについてはあまり心配しないようにしましょう。これらの保存された2つのバイトが2000年に私たちを負けましどのような参照してください。

私は年+ 0101の日付を使用して、真の日付に変換示唆しています。同様にあなたは真の日として年間ストア年+月+ 01の月を格納する必要がある場合。

あなたは正しく後でその上で「日付のもの」を行うことができるようになりますことを行っている場合は、

あなたが使用し、データベース内の年を挿入しようとしている。
type YEAR

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top