SQL Serverデータベースには、数値、テキスト文字列、ブール値、日付などのさまざまなデータ型を格納できます。ただし、このようなデータの格納と処理には固有の機能があります。現在の記事では、SQL Serverデータベーステーブルに日付を格納し、さまざまな種類の日付をSQL Server形式YYYY-MM-DDに、またはその逆に変換することに焦点を当てます。
始めましょう!
YYYY-MM-DD –SQLServerの日付形式
SQL Server YYYY-MM-DDデータ形式は、年 は4桁でマークされます(例:2021)。月 次に、1〜12の範囲の2桁で指定されます。たとえば、6月は06になります。最後に、月の日 20などの2桁で表示されます。したがって、日付は2021年6月6日です。 、2021-06-21として保存されます。これは、SQLServerデータベースの日付のYYYY-MM-DD形式です。
SQL Serverでは、DateまたはDateTimeデータ型のいずれかを使用して日付を格納できます。 Dateデータ型とDateTimeデータ型の違いは、両方のデータ型が日付情報を格納する詳細レベルにあります。
- DateTime データ型は日付を格納します 一緒に 時間 時間の情報 、分 、および秒 。
- 日付 データ型では、日付のみを保存できます 時間情報のない情報。
次の例は、Dateデータ型とDateTimeデータ型の違いを示しています。
まず、ダミーの MyDatabase を作成します データベースと1つのテーブル(患者 )その中に。
患者 テーブルには、Id、Name、Gender、DOB(生年月日)、およびDOD(死亡日)の5つの列があります。 DOB列のタイプはDateですが、DOD列のタイプはDateTimeデータ型です。
CREATE DATABASE MyDatabase
USE MyDatabase
CREATE TABLE Patient
(
Id INT PRIMARY KEY IDENTITY(1,1),
Name VARCHAR (50) NOT NULL,
Gender VARCHAR (50),
DOB Date,
DOD DateTime
)
次のスクリプトは、いくつかのダミーレコードを Patient に挿入します テーブル:
INSERT INTO Patient
VALUES ('Jack', 'Male', '1960-12-15', '2017-06-30 16:30:35'),
('Sara', 'Female', '1962-01-20', '2015-02-22 10:35:55'),
('Elisa', 'Female', '1959-03-25', '2020-03-16 22:24:39'),
('Nik', 'Male', '1938-12-15', '2011-06-21 09:45:55'),
('Jos', 'Male', '1940-09-12', '2015-03-25 11:55:20')
DOB列とDOD列に挿入された値の違いに注意してください。 DOB列にはYYYY-MM-DD形式の値がありますが、DOD列には、HH:MM:SS(時間:分:秒)情報を渡します。
患者がどのようになっているのか見てみましょう テーブルが見えます。次のSQLスクリプトを実行して、Patientテーブルからすべてのレコードを選択します。
SELECT * FROM Patient
SQLServerでDateTimeを日付形式YYYY-MM-DDに変換する方法
多くの場合、必要なのは日付部分だけです。 DateTimeから 桁。日付値はデフォルトでYYYY-MM-DD形式でSQLServerに格納されるため、 DateTimeデータ型から日付部分を抽出すると、この形式で日付が返されます 。
例を見てみましょう。 DOD 患者の列 テーブルはDateTimeに値を格納します フォーマット。 日付を抽出する方法を見てみましょう 列の一部:
SELECT CAST(DOD AS DATE) AS DOD_Date
FROM Patient
上記のスクリプトからわかるように、DateTimeタイプ列をDateに変換する 、キャストを使用できます 働き。列名の後にASを渡す必要があります ステートメントと日付 キャストに入力します 機能。
スクリプトの結果は次のとおりです。DOD列の値が選択され、YYYY-MM-DD形式に変換されます。
元のDODの両方を選択しましょう 列の値と変換されたDOD それらの違いを示す値:
SELECT DOD as DOD, CAST(DOD AS DATE) AS DOD_Date
FROM Patient
最後に、テーブル内のすべての列を選択して1つの列のみをキャストする場合(たとえば、DOD列を日付型に変換する場合)、次のスクリプトを実行できます。
SELECT t.*, CAST(DOD AS DATE) AS DOD_Date
from Patient t
出力には、すべてのテーブル列と、DOD列の日付部分を含むDOD_Date列が表示されます。
文字列をSQLServerの日付形式に変換する方法YYYY-MM-DD
多くの場合、日付はSQLServerテーブルの列に文字列形式で格納されます。文字列値をSQLServerの日付形式YYYY-MM-DDに変換できます。
患者に別の列を作成しましょう テーブル。列の名前はArriv_Date (患者の到着日を示すダミー列)、列タイプは VARCHAR 。次のスクリプトを実行して、この列を作成します。
ALTER TABLE Patient
ADD Arriv_Date varchar(50);
新しいArriv_Dateを受け取ります Patientに列が追加されました 桁。現時点では、 Arriv_Date 列にNULLが含まれています 値。
SELECT * FROM Patient
ここで、いくつかのレコードを Arriv_Dateに追加しましょう。 桁。次のスクリプトは、さまざまな日付形式の文字列をこの列に挿入します。
UPDATE Patient SET Arriv_Date = '10-Nov-2012' WHERE Id = 6
UPDATE Patient SET Arriv_Date = 'March 31, 2015' WHERE ID = 7
UPDATE Patient SET Arriv_Date = '12/02/2020' WHERE ID = 8
UPDATE Patient SET Arriv_Date = '10 October 2020' WHERE ID = 9
UPDATE Patient SET Arriv_Date = '15/10/21' WHERE ID = 10
それでは、 Arriv_Dateのデータがどのようになっているのか見てみましょう。 列が見えます。以下のスクリプトを実行します:
SELECT * FROM Patient
Arriv_Dateのすべての文字列を変換するには SQLServerの日付形式の列YYYY-MM-DD 、キャストを再度使用できます 働き。列名の後にASを指定する必要があります ステートメントと日付 タイプ。
次のスクリプトは、元の Arriv_Dateを選択します 日付形式に変換される列とその中の値。
Select Arriv_Date, CAST(Arriv_Date as DATE) as ARRIVAL_DATE
FROM Patient
出力には、さまざまな日付形式の値が表示されます。文字列タイプの列Arriv_Date YYYY-MM-DDに変換されます ARRIVAL_DATEの形式 列:
SQLServerの日付形式YYYY-MM-DDを他の形式に変換する方法
他の形式をYYYY-MM-DDに変換できるのと同じように、その逆も可能です。 YYYY-MM-DDを変換するには 日付形式を異なる日付形式の文字列に変換するには、CONVERT関数を使用できます。
CONVERT関数は、次のスクリプトのVARCHAR(50)であるターゲットタイプ、元の日付列、およびコードの3つのパラメーターを受け入れます。このコードは、変換された日付がどのようになるかを定義します。ここで、コード値105は、日付をDD-MM-YYYY形式に変換します。
スクリプトを実行して、日付をYYYY-MM-DD形式からDD-MM-YYYYに変換します。
SELECT DOB, CONVERT(varchar(50), DOB ,105) as DOB_CONV
From Patient
出力は次のとおりです:
別の例を見てみましょう。変換された日付のコード値106は、日付をYYYY-MM-DD形式からDDMONYYYY形式に変換します。たとえば、最初の列では、日付1960-12-15が1960年12月12日に変換されます。
SELECT DOB, CONVERT(varchar(50), DOB ,106) as DOB_CONV
From Patient
同様に、コード値6は、日付をDDMONYY形式に変換します。
SELECT DOB, CONVERT(varchar(50), DOB ,6) as DOB_CONV
From Patient
そして最後に、コード値11は、日付をYYYY / MM/DD形式に変換します。
SELECT DOB, CONVERT(varchar(50), DOB ,111) as DOB_CONV
From Patient
さまざまな日付形式と対応するコードすべての詳細については、SQLServerの公式ドキュメントを参照してください。
結論
このようにして、SQLサーバーの日付形式YYYY-MM-DDの本質と、日付をこの形式に、またはその逆に変換する特定のケースの両方を明確にしました。
CAST関数を使用してDateTimeや文字列などのさまざまなデータ型をYYYY-MM-DD形式に変換し、CONVERT関数を使用してYYYY-MM-DDの日付を他の形式に変換する方法を学びました。
さらに、SQL Serverスペシャリスト向けの最新のツールを使用すると、日付の編集作業がはるかに簡単になります。たとえば、多機能のdbForge Studio for SQL Serverには、他のオプションの中でも、SQLServerで日付を操作するときに使用できる便利なビジュアルデータエディターが含まれています。
この情報がお役に立てば幸いです。乞うご期待!