2017-11-08 28 views
0

'dd.mm.yyyy'の形式で日付を保存したい。だから私は、(Visual StudioとSQL Serverを使用する方法で)SQLの日付の形式が異なっていると読んでいます。SQL:テーブルの作成時に日付書式を指定して記入する方法

I tried this code: 
CREATE TABLE APP(
    ID INT NOT NULL, 
    DT DATE FORMAT 'dd.mm.yyyy', 
    ADDRESS NVARCHAR (100) , 
    PRIMARY KEY (ID) 
); 

しかし、それはエラーを返します:

Incorrect syntax near 'FORMAT'.

その後、私はこのコードを使用する:

INSERT INTO APP (ID, DT) 
VALUES ('1','22.12.2016') 
+0

https://www.w3schools.com/sql/func_sqlserver_convert.asp –

+2

日時整数のような値型です。それを書式設定することはできません。読んでいる間に書式を設定する必要があります。 –

+0

日付型を使って日付を保存し、後で 'CONVERT 'のようなものを使ってビジュアルフォーマットを心配してください。 _日付をテキストとして保存しないでください。 –

答えて

1

日付はバイナリ形式で保存されるため、テーブル定義に書式を指定する必要はありません。

CREATE TABLE APP(
    ID INT NOT NULL, 
    DT DATE, 
    ADDRESS NVARCHAR (100) , 
    PRIMARY KEY (ID) 
); 

ただし、そのテーブルに挿入しようとすると、サーバーは文字列を挿入する前にその文字列を日付に変換しようとします。 12.11.2017が11月12日か12月11日の12日であるかどうかを知ることができないので、これは問題になる可能性があります。これを理解するために、操作を実行しているユーザーアカウントのローカライズ設定を使用します。

多くの場合、操作を実行しているアカウントは、USA形式、月日、年(MDY)に設定されています。希望するものは、曜日の年(DMY)形式です。日付の部分の順序は次のように設定DATEFORMATを使用することが何であるか、それを伝えるために一つの方法:

SET DATEFORMAT dmy; 

INSERT INTO APP (ID, DT) 
VALUES (1,'22.12.2016') 

別の方法としては、CONVERT機能を使用して、日付に文字列をキャストし、日付の形式が何であるか、それを伝えることです。フォーマットは次のようにドイツのフォーマットのために104のようなnumeric codesを有する:

INSERT INTO APP (ID, DT) 
VALUES (2,CONVERT(date,'22.12.2016',104)) 
4

日付は内部形式で保存されます。形式は入力と出力にのみ意味があります。あなたのケースでは

あなたはドイツのフォーマット(104)で日付をしたいので、あなたが使用することができます。

select convert(varchar(255), dt, 104) 

あなたが好きなら、あなたは別の列としてフォーマットされた日付を含めることができます。

CREATE TABLE APP (
    ID INT NOT NULL, 
    DT DATE, 
    ADDRESS NVARCHAR(100), 
    DT_FORMATTED AS (convert(varchar(255), dt, 104)), 
    PRIMARY KEY (ID) 
); 

dt_formattedを参照して、必要な形式で文字列を取得することができます。

+0

とても早い回答ありがとう!いくつかの点を追加してください: 'INSERT INTO APP(ID、DT)VALUES( '1'、 '22.12.2016')'として日付を追加するにはどうしたらいいですか?ドイツ語のフォーマット –

+0

@Mikhail_Samを使用してくださいhttps://docs.microsoft.com/en-us/sql/t-sql/functions/cast-and-convert-transact-sql - あなたは104に変換する必要がありますページ – plaidDK

1

使用この

CREATE TABLE APP(
    ID INT NOT NULL, 

    DT DATE , 

    ADDRESS NVARCHAR (100) , 

    PRIMARY KEY (ID) 
); 
1

そのデフォルト設定はありません、それはありませんYYYY-MM-DD

です。フィールドに関連付けられている書式情報はまったくありません。

値はデータベースによってフォーマットされず、特定の時点としてのみ返されます。その値をテキスト表現にフォーマットすることは、データベースからデータを取得しているアプリケーションによって行われます。

したがって、データ値のフォーマット方法を変更するためにデータベースで行うことはできません。データを表示する場所を変更する必要があります。

関連する問題