1

私は MS SQLServer を使用しており、次のようなテーブルに月/年の組み合わせを挿入しようとしています:

INSERT INTO MyTable VALUES (1111, 'item_name', '9/1998')

どうやら、上記のコマンドは機能しないため、

Conversion failed when converting date and/or time from character string.

9/1998形式が悪いからです。これを修正したいのですが、テーブルのこの列には次のように表示されます。

9/1998
12/1998
(other records with month/year format) 
...

誰かがこれで私を助けることができますか?

ありがとうございました

4

6 に答える 6

3

SQL Serverは、MSDNデータ型リストで確認できるように、完全な日付(日、月、年)または日時のみをサポートします:http://msdn.microsoft.com/en-us/library/ff848733 (v = sql .105).aspx

偽の日を含む日付値を使用することも、値を文字列として格納することもできますが、月と年のペアを格納するだけのネイティブ型はありません。

于 2012-10-05T22:48:11.680 に答える
1

これは古い投稿ですが、私の最近のテストでは、日付を格納するか、年と月を 2 つの列 (年smallint、月tinyint ) に分割すると、全体的に同じサイズになることが確認されています。違いは、実際に日付を必要なフィルター (年/月) に解析する必要がある場合に表示されます。

このソリューションについてどう思うか教えてください!:)

敬具

于 2016-03-13T08:16:39.543 に答える
0

その日は「01」を使用できます。

INSERT INTO MyTable VALUES (1111, 'item_name', '19980901')
于 2012-10-05T22:44:57.590 に答える
0

あなたはできる:

1)列タイプをvarcharに変更します

2)提供された値を取得し、SQLサーバーが挿入する前に受け入れる適切な形式に変換し、データをプルするときに「M/YYYY」形式にフォーマットし直します。SELECT MONTH([myDate]) + '/' + YEAR([myDate]) ...

于 2012-10-05T22:48:29.590 に答える
0

データをどのように使用するかを検討する必要がある場合があります。現時点では、データのキャプチャと表示のみに関心があります。ただし、将来的には、日付計算を実行する必要がある場合があります (つまり、2 つのレコードの違いを比較します)。このため、また、そこまでの道のりの約 3 分の 2 に達しているため、このフィールドを日付型に変換することもできます。プレゼンテーション レイヤーは、"MM/yyyy" として適切に表示するタスクを委任できます。この機能は、使用しているほぼすべてのプログラミング言語またはレポート プラットフォームで利用できます。

于 2012-10-05T22:57:47.247 に答える
0

日付型を使用する場合は、値をフォーマットする必要があります。

declare @a date
SELECT @a='2000-01-01'
select RIGHT( convert (varchar , @a, 103), 7) AS 'mm/yyyy'

SELECT * FROM... のようなクエリを作成する場合は、日付型の代わりに varchar を使用する必要があります。

于 2012-10-05T22:59:59.477 に答える