SQLShack
はじめに
初心者のための共通のタスクは、SQL変換日付を行う方法を学び、他のデータ型または日付に他のデータ型を隠すためにそれらの日付を変換する作業することである。
ここで、この記事では、我々は仕事と異なる形式またはその逆に日付を変換する方法を説明します。
Requirements
- SQL Serverは、インストールされています。 SQL Server 2008
で始まる
例
最初の例は簡単です、我々はテーブル内の日付とvarchar列を持っていますが、我々は日付にvarcharを変換する必要があります。 SQLの日付変換を行う必要があります。
ここで、データを含むテーブルを作成するスクリプトです。
1
2
3
4
5
6
7
8
9
10
11
12
|
create table .(
not null,
(100) null,
constraint primary key clustered
(
asc
)with (pad_index = off, statistics_norecompute = off, ignore_dup_key = off, allow_row_locks = on, allow_page_locks = on) ). on
) on
go
insert . (,) 値 (1, n’02-03-2005′)
insert . (,) 値 (2, n’03-05-2006′)
insert . (, ) VALUES (3, N’04-05-2011′)
|
列 date を nvarchar(100) から日付に変換したい。
これを行うには、テーブルのデザインを変更してみることにします。
![](https://www.sqlshack.com/wp-content/uploads/2019/04/ssms-design-table.png)
Data Type を smalldatetime に変更してみます:
![](https://www.sqlshack.com/wp-content/uploads/2019/04/change-varchar-to-smalldatime-in-ssms.png)
次のエラー メッセージが表示されます:
Saving changes is not permitted.Of you can’t change? あなたが行った変更により、以下のテーブルを削除して再作成する必要があります。 このエラーを解決するには、SSMS でツール > オプション メニューに移動します。
![](https://www.sqlshack.com/wp-content/uploads/2019/04/change-options-in-ssms.png)
オプションで、デザイナー > テーブルとデータベースデザイナーに移動し、テーブルの再作成を必要とする変更を保存しないのチェックボックスをオフにしてください。
![](https://www.sqlshack.com/wp-content/uploads/2019/04/uncheck-prevent-saving-changes-that-require-table.png)
このオプションは、テーブルの再作成を保存しないようにするオプションに無効になります。 あなたが列のデータ型を変更すると、それはテーブルの再作成が必要です。
さて、あなたはデザインを保存することができますし、あなたのテーブルは日付に変換され、SQLの変換日が完了します:
![](https://www.sqlshack.com/wp-content/uploads/2019/04/sql-convert-date-date-time-results-after-convert.png)
変換関数
T – SQLにはデータ型の変換の関数が含まれています。 ここでは、CASTとCONVERTを使ってSQLの変換日を行うことにします。
How to convert from varchar, nvarchar, char, nchar to sql date using CAST
次の例では、CAST関数を使って文字をdatetime日付型に変換する方法について説明します。
1
2
|
declare @vardate varchar(100)=’03-04-2016′
select CAST(@vardate AS datetime) AS dataconverted.DATE_CAST_DATE_DATE_DATE_DATE_DATE_DATE_DATE_DATE_DATE_DATE_DATE_DATE_DATE_DATE_DATE_DATE_DATE_DATE_DATE_DATE_DATE_DATE_DATE_DATE_DATE
|
この例では、vardateという変数を宣言し、varcharであるこの変数をCAST関数を使用してdatetimeに変換しています。
注:CAST関数の詳細については、このリンクを参照してください。 CASTとCONVERT(Transact-SQL)
How to do a SQL convert date from varchar, nvarchar, char, nchar to date using CONVERT
CONVERT is a function that can do the same than CAST in the previous scenario.CASTは、CASTと同じように、日付の変換を行うことができます。
1
2
|
declare @vardate varchar(100)=’03-04-2016′
select CONVERT(datetime.date)
は、CONVERT(datetime.datetime)を使用して日付に変換する関数です。 vardate) as dataconverted
|
T-SQL コードはキャストと同じことをしていますが、CONVERT 関数を使用しています。 CONVERTの利点は、style引数で簡単に日付の書式を変更できることです。
例えば、ISO形式の日付にしたい場合は、次のようなT-SQL文を使用します。
1
|
select CONVERT(nvarchar(30),getdate().DATE).DATE(DATE).DATE(DATE).DATE(DATE).DATE(DATE), 121) as isoformat
|
How to convert sql date into different formats in T-SQL
次の例は、日付フォーマットを異なるフォーマットで変換する方法について示しています。
Japananes形式の場合:
1
|
select CONVERT(nvarchar(30),getdate().NET).NET).NET).NET).NET).NET).NET).NET).NET).NET).NET).NET).NET).NET).NET).NET).NET).NET).NET).NET), 111) as Japanformat
|
米国形式の場合です。
1
|
select CONVERT(nvarchar(30),getdate(), 110) as USAformat
|
ANSIフォーマットでは、次のようにします。
1
|
select CONVERT(nvarchar(30),getdate(), 102) as ANSIformat
|
英国式のフォーマットでは、次のようになります。
1
|
select CONVERT(nvarchar(30),getdate(), 103) as Britishformat
|
Deutschフォーマットの場合は、次のようにします。
1
|
select CONVERT(nvarchar(30),getdate(), 104) as Germanformat
|
イタリア書式では、。
1
|
select CONVERT(nvarchar(30),getdate(), 105) as Italianformat
|
欧州デフォルトフォーマットでは、次のようになります。
1
|
select CONVERT(nvarchar(30),getdate(), 113) as EuropeDefaultformat
|
ODBC Canonical用です。
1
|
select CONVERT(nvarchar(30),getdate(), 120) as ODBCCanonicalformat
|
FORMAT関数を使って、常に希望する形式の日付を取得するオプションが用意されているのです。
1
|
SELECT FORMAT( getdate(), ‘dd/MM/yy’)
|
FORMATはスタイルを知っていなくてもいいので日付を扱いやすく、自分の好むフォーマットを使用しやすいですね。 しかし、私の経験では、CAST および CONVERT 関数を使用するコードを多く見かけるので、それらを知っておく方がよいでしょう。
注:FORMAT 関数の詳細については、このリンクを参照してください。 FORMAT (Transact-SQL)
SQL変換日付操作に関する問題
日付に変換しようとすると、常に可能というわけではありません。 次の例は、よくあるエラーです。
1
2
|
declare @vardate varchar(100)=’11242016′
select CONVERT(datetime.Date)
日付の変換に失敗しました。 vardate) as dataconverted
|
エラーメッセージは以下のとおりです。
Msg 242, Level 16, State 3, Line 22
varcharデータ型からdatetimeデータ型への変換で、範囲外の値が発生しました。
日付には、”/”、”.”、”-“などの区切り文字が必要です。
次の例では、文字列を11242016から11-24-2016に変更し、SQLの日付に変換しています。
1
2
3
4
5
|
declare @vardate varchar(100)=’11242016′
set @vardate= SUBSTRING(@vardate.S)
set @vardate= SUBSTRING(@vardate, 1, 2)+’-‘+ SUBSTRING(@vardate, 3, 2)+’-‘+SUBSTRING(@vardate, 5, 4)
select CONVERT(date, @vardate) as dataconverted
|
Subringを使って「-」を連結して許容できる日付形式を使って、CONVERT関数を使って文字をSQL日付に変換しているところです。
日付データ型
SQL Serverでは、日付データ型にはいくつかの種類があります。
- Timeは時、分、秒、ナノ秒を返します(hh:mm:ss.nnnnn)
- Dateは年、月、日(yyyy-mm-dd)
- Smalldatetime このフォーマットで日付を返します。 YYYY-MM-DD hh:mm:ss
- Datetime2はDatetimeに似ていますが、より正確です(YYYY-MM-DD hh:mm.ss)。ss)
- Datetimeoffset datetime2の精度を持っていますが、UTCのタイムゾーンに使われます
Datetimeはこの書式でデータを返します。 YYYY-MM-DD hh:mm:ss
SQL convert date to integer
CONVERTやCASTでdatetimeを整数化すると、1900年から与えられた日付までの日数が返されます。
例えば、次の T-SQL コードは、1900 年から今日までの日数を表示します:
1
|
SELECT CONVERT(INT, GETDATE())
|
datetime 値の年、月、日などを整数に変換することもできます。 次のコードは、datetime 値の日、月、年を整数変数に格納する方法を示しています:
1
2
3
4
5
|
declare @year int = year(getdate())
declare @month int = month(getdate())
declare @day int = day(getdate())です。
select @year as year,@month as month,@day as day
|
Common Questions about SQL convert date in SQL Server
注:以下のリンクにSQL Serverでの関数と日付に関するFAQが記載されています。 SQL Server の日付に関する FAQ
Conclusions
この記事では、SQL Server で SQL 変換の日付を行う方法を学びました。 テーブルのデータ型を変更する方法、CAST関数、CONVERT関数、FORMAT関数の使用方法について学びました。 また、SQLのデータ型の種類についても学びました。
- Author
- Recent Posts
![](https://s33046.pcdn.co/wp-content/uploads/gravatar/danielcalbimonte.jpg)
彼は、世界中の政府、石油会社、Webサイト、雑誌、大学などで働いてきました。 Danielはまた、SQL Serversのカンファレンスやブログで定期的に講演しています。 彼は、認定試験用のSQL Serverトレーニング教材を執筆しています。
SQLShackの記事のスペイン語翻訳も手伝っている
Daniel Calbimonteの投稿をすべて表示
![](https://s33046.pcdn.co/wp-content/uploads/gravatar/danielcalbimonte.jpg)
- SQLインタビューの質問 – 9月3日。 2020年
- SQL認定資格 – 2020年8月7日
- TSQL履歴 – 2019年9月3日