IX Web Hosting メールアドレスの作成

IX Web Hosting

メールアドレスの作成

Mail Manager

まずはMail Manager画面を開きます。
Home画面からe-mailアイコンをクリックします。

IXWebhostingメールアドレス作成Mail Manager画面を開く

IXWebhostingメールアドレス作成Mail Manager画面を開く

New E-mail作成

Mail Manager画面が開いたら、作りたいメールアドレスのドメインを選択します。
上部にあるMail domainsの右側に登録したドメインのselect boxが有るのでそこで選択し、横の「GO」ボタンをクリックします。
画面が再表示された後ににE-mail Setup FunctionsのNew E-mailリンクをクリックします。Add new E-Mail画面が開きます。

IXWebhostingメールアドレス作成 New E-mail

IXWebhostingメールアドレス作成 New E-mail

Add new E-Mail

Add new E-Mail画面が開いたら、
1)Email addressの右横のメールアドレス欄に任意のメールアドレスを入力します。
2)MAILBOXの左横のcheck boxにチェックを入れます。
3)Passwordのパスワード欄に任意のパスワードを入力します。
4)Comment:後で見てわかるようにコメントを入れておきます。
  Catch All:チェックを入れると、このドメイン名を含む存在しない電子メールアドレスに送信されたメッセージを全て受信するようになります。
  Discard All Incoming Mail:チェックを入れると、来たメール全てを破棄します。普通はチェックしないですね。
5)一番下のsubmitボタンをクリックします。

IXWebhostingメールアドレス作成

IXWebhostingメールアドレス作成

Add new E-Mail

再びMail Manager画面が表示されます。
メールアドレスが作成されると、「Mailbox xxxxxxx@xxxxx.xxx has been added successfully」のメッセージが上部に赤文字で表示されます。
また、下部のE-mail一覧の中に作成したメールアドレスが表示されていますので確認します。

以上で、IX Web Hosting メールアドレスの作成ができます。

IX Web Hosting WordPressを使用するときの問題点

IX Web Hosting

WordPress を使用するときの問題点

「IX Web Hosting」レンタルサーバでASP.NETのテストやホームページを運用しています。
そんな中で、WordPressを使ったブログも運用し始めたのですが、問題があることを発見しました。
尚、私は「IX Web Hosting Business Plus (Win)」プランを使用していますので、Linuxベースのレンタルサーバではまた違うと思います。

WordPress はデータベースMySQLが必須です

WordPressはデータベース「MySQL」にデータベースを格納します。
「MariaDB」という手も有りますが、見たことないので。。。
で、問題とは、「PHP」と「MySQL」のバージョンが低いことです。

WordPress の MySQL の推奨動作環境

MySQL バージョン 5.6 以上 です。
ちなみに、PHP バージョン 7 以上です。
しかし、古い PHP や MySQL しか利用できないレガシーな環境でも、PHP 5.2.4 以上、かつ MySQL 5.0 以上であれば WordPress は動作します。

IX Web Hostingの環境

MySQL バージョン 5.1.68 です。
ちなみに、PHP バージョン 5.4.10 です。
なので、動作はしています。

しかし、公式サポートは終了している

PHP 5.2.4 以上、かつ MySQL 5.0 以上であれば WordPress は動作しますが、公式サポートは終了していますので、Webサイトがセキュリティの脆弱性にさらされる危険があります。

以上、「IX Web Hosting WordPressを使用するときの問題点」での報告でした。

IX Web Hosting Microsoft SQL Server 2005の問題?

IX Web Hosting

「Microsoft SQL Server 2005」の問題の報告

IX Web Hostingの「Microsoft SQL Server 2005」の問題の報告?です。

Microsoft SQL Server 2005 2016年4月12日をもって、サポートが終了されています。
なので、ちょっと問題と言えば問題なんですよね。
SQL Server 2005 のサポートは終了させていただきました。 長い間ご愛顧いただきありがとうございました。

私の場合、ミッションクリティカルな処理もデータもここでは使っていないので、問題ないのですが。
もし、重要なデータを取り扱うのであれば、最近は手軽に使えるクラウドも有るし、そちらに移動した方が良いですね。
ちなみに私は業務では「windows azure」を利用しています。

この辺りは、安いだろう悪かろうの良い例ですね。
あと3年ちゃんと維持してくれるかな?
心配になってきたぞ。。。

以上、IX Web Hostingの「Microsoft SQL Server 2005」の問題の報告?でした。

IX Web Hosting Dedicated IPとShared IP

IX Web HostingでSSLを設定する(初回設定)の仕方を紹介したのですが、もっと基礎的な質問をしている投稿を見つけてしまったので、Dedicated IPとShared IPについてとその設定方法の説明を少しします。

あっ、そもそもの質問についてはこちらから↓
誰か助けて下さい! 現在、IX web hostingで・・・

まず、Dedicated IPとShared IPですが、
Dedicated IPは、あなたのWebサイトに専用のIPアドレスをもらえるってことです。
Shared IPは、複数のユーザ(複数のWebサイト)に共用で割り与えられるIPアドレスです。

で、なぜ専用IPアドレスが必要かというとSSLを使いたいからです。
SSLの基本的な仕様に専用のIPアドレスを必要とするというのがあります。
なので、SSLを使いたいなら、専用のIPアドレス⇒Dedicated IPが必要となります。
もっと詳細に知りたい方は、「SSL 専用IP」などでググってください。

で、IX Web HostingではDedicated IPをいくつか貰うことができます。
私の「Bisiness Plus(Win)」プランでは3つ、一番少ない(安い)プランでも2つDedicated IPが貰えます。

ただ、Dedicated IPが貰えたらと言って、専用のサーバになるわけでもなく、処理が速くなるわけでもありません。
単に紐づくIPアドレスが専用か共用かだけの違いなので。

で、この質問者の人は、「昨日登録したドメインのIPアドレスの後に (shared)が付いている」と言っています。
これは、ドメインを登録しただけなので、Shared IPが付与されているってことです。

IX Web hosting Domain List

IX Web hosting Domain List

私の登録したドメインリストですが、IPアドレスの後ろにまさしく、 (shared)が付いています。

質問者さんが質問したかった、「このIPアドレス(shared)はなんですか?」は、質問者さんが契約時に割り当てられたサーバの共用IPアドレスがデフォルトで付いてきます。と言うのが回答になります。
次に「本日登録したドメインも同じIPアドレスが付いているのはなぜですか?」は、質問者さんが契約時に割り当てられたサーバの共用IPアドレスがデフォルトで付いてくるから。と言うのが回答になります。
次に「出来れば、違うIPアドレスにして登録していきたいので、そのコツ」については、ドメインのプロパティを変更する「Edit Domain」画面のIP Address欄の「CHANGE to Dedicated IP」をクリックしてDedicated IPにしてあげれば解決できます。

IX Web hosting Edit Domain

IX Web hosting Edit Domain

回答者の方の言われていることが理解できて居れば難しい設定ではないのですが、前提知識がないと辛いのも事実です。
私も英語が苦手でなかなかIX Web Hostingでレンタルサーバを借りれなかったのですが、まぁ、なんとか運営できそうです。

とりあえず、SSL設定の前にDedicated IPを設定する必要があることを知らない人もおられるので、紹介しておきました。

IX Web Hosting MS SQL Database環境の使い勝手

IX Web Hosting

MS SQL Database環境の使い勝手

現在(2017年1月)、この備忘録は海外レンタルサーバのIX Web Hostingを利用して運営しています。
IX Web Hostingは海外のレンタルサーバですが、慣れてくるとほぼ思い通りのことができ助かっています。
今回は、IX Web HostingのMS SQL Database環境の使い勝手についての紹介です。

IX Web Hostingは、データベースに「Microsoft SQL SERVER」を使うことができます。
MS SQL Databaseという名前で出ていますが、「Microsoft SQL SERVER」のMicrosoft SQL 「Server Workgroup Edition」です。
詳細は「Microsoft SQL Server 2005 – 9.00.5057.00 (Intel X86) Microsoft Corporation Workgroup Edition on Windows NT 5.2 (Build 3790: Service Pack 2) 」です。

IX Web hosting SQL SERVER

IX Web hosting SQL SERVER

私の「Business Plus (Win)」というプランでは、「MS SQL Database」は100個まで作ることができます。
そんなに必要ないんですけどね。

で、使い勝手なのですが、悪い点から言うと、

照合順位問題

1)照合順位問題
「SQL_Latin1_General_CP1_CI_AS」から変更できません。
デフォルトのままだと、英語 (米国) Windows システム ロケールを使用するコンピュータにインストールされているサーバーの既定の照合順序に従うことになります。

なので日本語での並び替えや条件分岐、条件検索がやりにくいです。
日本語を取り使うにはCOLLATE 句を使えばできると思います。。。でも毎回指定するのも大変ですし、データベースのソートパフォーマンスも悪くなるので。
そうするとJoin句等のために全てのテーブルを作成する時にCOLLATE 句使い作成するようにしておくのが良い手かも。

MMSMからはエラーでできませんでしたが、T-SQLでSQLを発行してやると出来ました!


ALTER DATABASE my-db-name COLLATE Japanese_CS_AI

その他、詳しくは見ていませんが、通貨、日付、時刻の形式などのデフォルトが異なっている可能性があります。
権限さえあれば、変更も可能なのですが、その権限は付与されていないので更新できませんでした。
IX Web Hostingのサポートに連絡すれば、「Japanese_CS_AI」などに変更してもらえるかもしれません。

表示が遅い

2)表示が遅い
共用でたくさんの人が使っているためMMSM(SQL Server Management Studio)のデータベース内の項目「表示が遅い」です。
実際のWebサイトのデータ表示は遅いと感じない程度です。
ただ、何百というデータベースがWorkgroup Editionに作成されているので、時には遅くなる時も有るだろうなと思っています。

MMSMのログイン

3)MMSMのログイン
MMSMのログインの時にログインエラーになったことが有ります。
たくさんの人が使っているので仕方ないかも。。。

バージョンが古い

4)バージョンが古い
「Microsoft SQL Server 2005、Workgroup Edition」ですから。。。

次に良い点ですが、

100個もDatabaseが作れる

1)100個もDatabaseが作れる
言うまでのないですが、テスト環境やバックアップ時に助かります。

MMSMからアクセスできる

2)MMSMからアクセスできる
「myLittleAdmin」などのサードパーティー制と違いやはり使いやすい。
メンテナンスもやり易いです。

良い点は少ないですが、格安でこれだけ使えたら文句は言えないですよね。
日本語を扱うデータベースの構築にはデフォルトのまま使用できないのでこのことだけ注意ですね。

以上、IX Web Hosting MS SQL Database環境の使い勝手でした。

【SQL SERVER】 一時テーブルにPRIMARY KEYやINDEXを付ける

一時テーブルにPRIMARY KEYやINDEXを付ける開発備忘録です。
一時テーブルの備忘録を書いたときに、「一時テーブルには、PRIMARY KEYを付けたり、INDEXを付けたりもできます。」と書きましたので、その付け方を備忘録しておきます。

まずは、一時テーブルを作成します。

create table #tmpTable
(
	a_id int NOT NULL
	,b_cd nvarchar(2) NULL
	,c_val nvarchar(10) NULL
)

次に、PRIMARY KEYを設定します。
a_idをPRIMARY KEYとして設定します。

alter table #tmpTable ADD PRIMARY KEY CLUSTERED 
(
	a_id asc
)

もちろん、一度に作ってしまっても問題ありません。

create table #tmpTable
(
	a_id int NOT NULL
	, b_cd nvarchar(2) NULL
	, c_val nvarchar(10) NULL
	,CONSTRAINT tmpTable_PK PRIMARY KEY CLUSTERED 
    (
      a_id asc
    )
)

次に、INDEXを設定します。
もちろん、PRIMARY KEYを設定しなくてもINDEXは設定できるます。
INDEX名は適当に。
create NONCLUSTERED INDEX tmpTable_INDEX_1 ON #tmpTable
(
a_id asc
,b_cd asc
)

以上、一時テーブルにPRIMARY KEYやINDEXを付ける開発備忘録でした。

【SQL SERVER】 一時テーブル

一時テーブルについての開発備忘録です。

データ処理を行っている時に、ちょっとした途中加工データを置いて置きたい場合があります。
でも、メモリに置くには大きすぎてという場合も有るし、テーブルに格納するのも排他制御や使用後の削除などの手間も有るのでテーブルは使いたくない。。。
通常のテーブルを使う場合は、固有のプロセスIDを負荷した列を設けて他のプロセスから切り離すなどをしないといけません。
そんな時に使うのが、「一時テーブル」です。一時という名前はついていますが、テーブルアクセスしてSQLで処理できるので楽にデータが扱えます。

一時テーブルは非常に使い勝手良く、ほぼ通常のテーブルと変わらぬ動きをします。
一時テーブルには、PRIMARY KEYを付けたり、Indexを付けたりもできます。
一時テーブルは、tempdb に格納される点と使用されなくなると自動的に削除されるという点を除いて、通常のテーブルと同じです。

一時テーブルには、ローカル一時テーブルとグローバル一時テーブルの2種類があります。
この2種類の一時テーブルでは、名前(#1つか2つかの違い)と表示とアクセス範囲が異なります。

ローカル一時テーブル名の先頭には、番号記号 (#) が1つ付いています。
このテーブルは、作成したユーザーの現在のセッション接続でのみ表示され、このユーザーが SQL Server のインスタンスから切断すると削除されます。
ローカル一時テーブルは、事前に現在のセッション内だけという制約も有り、最初から排他されているので排他処理等の手続きも不要です。
execSQLのように動的にSQLを動かす場合以外は、通常こちらのローカル一時テーブルを使用します。

create table #tmpTable
(
	a_id int NOT NULL
	, b_cd nvarchar(2) NULL
	, c_val nvarchar(10) NULL
)

グローバル一時テーブル名の先頭には、番号記号が2つ (##) 付いています。
このテーブルは、作成されるとすべてのユーザーに表示され、このテーブルを参照するすべてのユーザーが SQL Server のインスタンスから切断すると削除されます。
全てのユーザが使用可能になりますので、予めどのような状態のデータかがはっきりしている必要があります。
execSQLのように同一ユーザが動的にSQLを他のセッションで動かす場合のような単純な使い方であれば使い勝手も良いのですが、それ以外は通常のテーブル使用とあまり変わりません。

create table ##tmpTable
(
	a_id int NOT NULL
	, b_cd nvarchar(2) NULL
	, c_val nvarchar(10) NULL
)

しかし多くの場合、一時テーブルを使用する代わりに、table データ型の変数を使用することができます。table 変数については、変数を使用したテーブルの利用方法を見てください。

以上、一時テーブルについての開発備忘録でした。

【SQL SERVER】 四捨五入・切り捨て・切り上げについて

四捨五入・切り捨て・切り上げについての備忘録。

SQL SERVERのSQLを書いているとたまに「四捨五入」・「切り捨て」・「切り上げ」を取得時にしたい時があります。
本来生データの精度は、できる限る取得できる最大限の精度で保存したいものですが、使用する時にそこまで必要ない場合などありますし。

で、四捨五入・切り捨て・切り上げに使える関数ですが、
四捨五入には 「ROUND」
切り捨てには、「CEILING」
切り上げには、「FLOOR 」を使います。

ROUNDは、以下のようにでパラメターを3つ使います。
ROUND(四捨五入したい数値, 有効桁数[, 0 – 四捨五入、0 以外- 切捨て。 オプショナルでデフォルトは 0 ])
有効桁数は(0が1の位、1が小数点第1位、2が小数点第2位、3が小数点第3位、マイナス方向は-1であれば10の位、-2であれば100の位-3であれば1,000の位のようになります。

例えば、以下のようになります。

SELECT ROUND(1234.1234, -3) --> 1000.0000
SELECT ROUND(1234.1234, -2) --> 1200.0000
SELECT ROUND(1234.1234, -1) --> 1230.0000
SELECT ROUND(1234.1234, 0) --> 1234.0000
SELECT ROUND(1234.1234, 1) --> 1234.1000
SELECT ROUND(1234.1234, 2) --> 1234.1200
SELECT ROUND(1234.1234, 3) --> 1234.1230

3つめのパラメータを設定すると

SELECT ROUND(1555.1234, -3,0) --> 2000.0000
SELECT ROUND(1555.1234, -3,1) --> 1000.0000

FLOORとCEILINGはパラメターを1つだけで、そのまま整数値に切り捨て・切り上げしてくれます。

切り捨て(FLOOR)
例えば、以下のようになります。

SELECT FLOOR(1234.1234) --> 1234
SELECT FLOOR(1234.5678) --> 1234

FLOORとCEILINGは整数値に切り捨て・切り上げするので、小数点で切り上げ切り捨てを使うには、少し工夫が必要です。
まぁ、工夫と言っても桁を合わせてあげるだけですが。
例えば、以下のようになります。

SELECT FLOOR((1234.1234 * 10)) / 10 --> 1234.100000
SELECT FLOOR((1234.5678 * 100)) / 100 --> 1234.560000

切り上げ(CEILING)

SELECT CEILING(1234.1234) --> 1235
SELECT CEILING(1234.5678) --> 1235

SELECT CEILING(1234.1234 * 10) / 10 --> 1234.200000
SELECT CEILING(1234.5678 * 100) / 100 --> 1234.570000

以上、四捨五入・切り捨て・切り上げについての開発備忘録でした。

【SQL SERVER】 Pivot関数の使い方

今日はSQL SERVERのPivotに付いて使い方例を開発備忘録しておきます。

PivotはEXCELで良く集計に使われる関数です。
一般的にデータは正規化されて項目重複のない状態で保存されます。
例えば、売り上げは、日時、店舗CD、商品CD、個数、他と、店舗マスタ、商品マスターのような状態で保存されます。
人が見やすいデータは正規化されたデータと異なり、
例えば、同じ売り上げでも、日付、店舗名、商品名、個数、合計価格となります。

上の販売データの羅列を見せられても、人は売上状況を把握しづらいものです。
もっと言うなら、「森全体 ⇒ 森の一部 ⇒ 木 ⇒ 幹 ⇒ 枝 ⇒ 葉」のようにマクロなデータからミクロに向かう方が把握分析しやすいと言われています。

Pivotは個々の葉のレコードを寄り集めて、枝や幹、木、森の一部のような集計したデータにしてくれる関数です。

下のSQL例は、日時、商品CD、販売額のデータを

pivotー販売データテーブル

pivotー販売データテーブル


日付を行に商品を列に金額を合計した表をPivot関数を利用して返すようにしたものです。
販売データpivotテーブル

販売データpivotテーブル


また、PivotのIN句の中ではサブクエリが使用できないようなので、動的にSQLを作ってexecSQLで実行しています。
変数テーブルを使用しているため、execSQLでちょっと面倒になっていますが、本来はこんなことにならないので。。。勘弁してください。

declare @tbl1 table(s_date datetime, goods_cd nvarchar(9), price int)
insert into @tbl1 (s_date,goods_cd,price) values (GETDATE()-1, '001', 60)
insert into @tbl1 (s_date,goods_cd,price) values (GETDATE()-1, '010', 40)
insert into @tbl1 (s_date,goods_cd,price) values (GETDATE()-1, '020', 20)
insert into @tbl1 (s_date,goods_cd,price) values (GETDATE()-1, '030', 100)
insert into @tbl1 (s_date,goods_cd,price) values (GETDATE()-1, '001', 30)

insert into @tbl1 (s_date,goods_cd,price) values (GETDATE(), '001', 100)
insert into @tbl1 (s_date,goods_cd,price) values (GETDATE(), '010', 150)
insert into @tbl1 (s_date,goods_cd,price) values (GETDATE(), '020', 180)
insert into @tbl1 (s_date,goods_cd,price) values (GETDATE(), '020', 200)
insert into @tbl1 (s_date,goods_cd,price) values (GETDATE(), '030', 70)
 
insert into @tbl1 (s_date,goods_cd,price) values (GETDATE()+1, '001', 80)
insert into @tbl1 (s_date,goods_cd,price) values (GETDATE()+1, '010', 120)
insert into @tbl1 (s_date,goods_cd,price) values (GETDATE()+1, '030', 60)

select * from @tbl1

/*pivot*/
select * from (select convert(VARCHAR, s_date, 111 ) as s_date, goods_cd, price from @tbl1) S1 pivot (sum([price]) for [goods_cd] in ([001], [010], [020], [030])) T1 

--IN句を動的に作ろうとするとエラーになる
--in ([001], [010], [020], [030])が動的に作れない。。。
--select * from (select convert(VARCHAR, s_date, 111 ) as s_date, goods_cd, price from @tbl1) S1 pivot (sum([price]) for [goods_cd] in (select distinct goods_cd from @tbl1)) as T 


--ので、そこで変数内にSQLを書き、実行する。
--IN句を動的に作り、@goods_listに格納する
declare @goods_list nvarchar(128)
select @goods_list=replace(REPLACE((SELECT distinct goods_cd AS [kugiri] 
                   from	@tbl1
                   for xml path ('')), '</kugiri>', '],'), '<kugiri>','[') 
set @goods_list=substring(@goods_list,0,len(@goods_list))

--実行SQLクエリ作成
--execでは、変数テーブルが読めない(アクセスできない)ため、ここにも変数テーブルを追加(通常のテーブルならこんな必要はないです)
declare @sql nvarchar(2048)
set @sql =
    '
	declare @tbl1 table(s_date datetime, goods_cd nvarchar(9), price int)
	insert into @tbl1 (s_date,goods_cd,price) values (GETDATE()-1, ''001'', 60)
	insert into @tbl1 (s_date,goods_cd,price) values (GETDATE()-1, ''010'', 40)
	insert into @tbl1 (s_date,goods_cd,price) values (GETDATE()-1, ''020'', 20)
	insert into @tbl1 (s_date,goods_cd,price) values (GETDATE()-1, ''030'', 100)
	insert into @tbl1 (s_date,goods_cd,price) values (GETDATE()-1, ''001'', 30)

	insert into @tbl1 (s_date,goods_cd,price) values (GETDATE(), ''001'', 100)
	insert into @tbl1 (s_date,goods_cd,price) values (GETDATE(), ''010'', 150)
	insert into @tbl1 (s_date,goods_cd,price) values (GETDATE(), ''020'', 180)
	insert into @tbl1 (s_date,goods_cd,price) values (GETDATE(), ''020'', 200)
	insert into @tbl1 (s_date,goods_cd,price) values (GETDATE(), ''030'', 70)
 
	insert into @tbl1 (s_date,goods_cd,price) values (GETDATE()+1, ''001'', 80)
	insert into @tbl1 (s_date,goods_cd,price) values (GETDATE()+1, ''010'', 120)
	insert into @tbl1 (s_date,goods_cd,price) values (GETDATE()+1, ''030'', 60)

	select * from (select convert(VARCHAR, s_date, 111 ) as s_date, goods_cd, price from @tbl1) S1 pivot (sum([price]) for [goods_cd] in (' + @goods_list + ')) T1
	'
 
-- SQLクエリの実行
exec sp_executesql @sql;

上のデータに店舗を入れた場合は、以下のようになります。

pivotー販売データテーブル-店舗CD付き

pivotー販売データテーブル-店舗CD付き


販売データpivotテーブル店舗CD付き

販売データpivotテーブル店舗CD付き


declare @tbl1 table(s_date datetime, tnp_cd nvarchar(5), goods_cd nvarchar(9), price int)
insert into @tbl1 (s_date,tnp_cd,goods_cd,price) values (GETDATE()-1, '001', '001', 60)
insert into @tbl1 (s_date,tnp_cd,goods_cd,price) values (GETDATE()-1, '001', '001', 30)
insert into @tbl1 (s_date,tnp_cd,goods_cd,price) values (GETDATE()-1, '001', '010', 40)
insert into @tbl1 (s_date,tnp_cd,goods_cd,price) values (GETDATE()-1, '001', '020', 20)
insert into @tbl1 (s_date,tnp_cd,goods_cd,price) values (GETDATE()-1, '001', '020', 20)
insert into @tbl1 (s_date,tnp_cd,goods_cd,price) values (GETDATE()-1, '001', '030', 100)
insert into @tbl1 (s_date,tnp_cd,goods_cd,price) values (GETDATE()-1, '002', '001', 30)
insert into @tbl1 (s_date,tnp_cd,goods_cd,price) values (GETDATE()-1, '002', '001', 30)
insert into @tbl1 (s_date,tnp_cd,goods_cd,price) values (GETDATE()-1, '002', '020', 20)
 
insert into @tbl1 (s_date,tnp_cd,goods_cd,price) values (GETDATE(), '001', '001', 100)
insert into @tbl1 (s_date,tnp_cd,goods_cd,price) values (GETDATE(), '001', '010', 150)
insert into @tbl1 (s_date,tnp_cd,goods_cd,price) values (GETDATE(), '001', '020', 180)
insert into @tbl1 (s_date,tnp_cd,goods_cd,price) values (GETDATE(), '001', '020', 200)
insert into @tbl1 (s_date,tnp_cd,goods_cd,price) values (GETDATE(), '001', '030', 70)
  
insert into @tbl1 (s_date,tnp_cd,goods_cd,price) values (GETDATE()+1, '001', '001', 80)
insert into @tbl1 (s_date,tnp_cd,goods_cd,price) values (GETDATE()+1, '001', '010', 120)
insert into @tbl1 (s_date,tnp_cd,goods_cd,price) values (GETDATE()+1, '001', '030', 60)
insert into @tbl1 (s_date,tnp_cd,goods_cd,price) values (GETDATE()+1, '001', '020', 20)
 
select * from @tbl1
 
/*pivot*/
select * from (select convert(VARCHAR, s_date, 111 ) as s_date, tnp_cd, goods_cd, price from @tbl1) S1 pivot (sum([price]) for [goods_cd] in ([001], [010], [020], [030])) T1 
 

以上、今日はSQL SERVERのPivotに付いて使い方例を開発備忘録でした。

SQL Server 日付の年月日だけを取り出す: CONVERT

SQL Server 日付の年月日だけを取り出す: CONVERT

SQL SERVERで日付の年月日だけを取り出す関数 CONVERT の開発備忘録です。

比較的よく使う変換ですので、簡単にメモ書きしておきます。
下の例は、システム日時を取得し、yy/mm/dd, yyyy/mm/dd 形式で年月日だけを取り出し、VARCHAR に変換しています。

SELECT CONVERT ( VARCHAR, GETDATE(), 11 )
SELECT CONVERT ( VARCHAR, GETDATE(), 111 )

11, 111の引数部分は以下の表を見てもらうと、11, 111なので、日本 yy/mm/dd で取得できます。
111の場合は、年が4桁表示の yyyy/mm/dd になります。
11か111以外はほぼ使わないと思いますが、たまに使うことも有るかもしれないので、一式載せておきます。

2 桁の年 (yy) 年を 4 桁で表現 (yyyy) 標準 入力/出力
0 または 100 (*) 既定値 mon dd yyyy hh:mi AM (または PM)
1 101 米国 mm/dd/yyyy
2 102 ANSI yy.mm.dd
3 103 英国/フランス dd/mm/yy
4 104 ドイツ dd.mm.yy
5 105 イタリア dd-mm-yy
6 106 dd mon yy
7 107 Mon dd, yy
8 108 hh:mm:ss
9 または 109 (*) 既定値 + ミリ秒 mon dd yyyy hh:mi:ss:mmm AM (または PM)
10 110 米国 mm-dd-yy
11 111 日本 yy/mm/dd
12 112 ISO Yymmdd
13 または 113 (*) ヨーロッパ: 既定値 + ミリ秒 dd mon yyyy hh:mm:ss:mmm (24h)
14 114 hh:mi:ss:mmm (24h)
20 または 120 (*) ODBC 標準 yyyy-mm-dd hh:mi:ss (24h)
21 または 121 (*) ODBC 標準 (ミリ秒を含む) yyyy-mm-dd hh:mi:ss.mmm (24h)
126(***) ISO8601 yyyy-mm-ddThh:mm:ss.mmm (スペースなし)
130* イスラム**** dd mon yyyy hh:mi:ss:mmm AM
131* イスラム**** dd/mm/yy hh:mi:ss:mmm AM

以上、SQL SERVERで日付の年月日だけを取り出す(convert)開発備忘録でした。