SQL SERVER 日付の加算、減算

SQL SERVER

日付の加算、減算

SQL Serverは、DATEADD関数を使って日付型の値に日時を加算、減算する事ができます。

構文:DATEADD(element, value, target)

elementには日付要素を記述します。
日付要素は以下のようなものがあります。
year(yy or yyyy) : 年
quarter(qq or q) : 四半期
month(mm or m) : 月
dayofyear(dy or y) : 年始からの日数
day(dd, d) : 日
week(wk, w) : 週
weekday(dw) : 曜日
hour(hh) : 時
minute(mi or n) : 分
second(ss) : 秒
millisecond(ms, s) : ミリ秒

valueには加算、減算した値を設定します。
targetには、基準となる日付型の値を設定します。

日付の加算

日の加算をしたい場合は、elementに「day」、valueに「加算したい日数」、targetに基準日を設定します。

例えば、現在から5日後の日付が欲しい場合は、
DATEADD(day, 5, getdate())
で取得できます。

例えば、現在から12時間後の日付が欲しい場合は、
DATEADD(hour, 12, getdate())
で取得できます。

日付の減算

日の減算をしたい場合は、elementに「day」、valueに「減算したい日数」、targetに基準日を設定します。
減算したい日数は、マイナスで指定します。
1日前なら-1、2日前なら-2

例えば、現在から5日前の日付が欲しい場合は、
DATEADD(day, -5, getdate())
で取得できます。

例えば、現在から12時間前の日付が欲しい場合は、
DATEADD(hour, -12, getdate())
で取得できます。

上の説明でほぼ理解できたと思いますが、一応例を載せておきます。

declare @d datetime
declare @d2 datetime
declare @d3 datetime
declare @d4 datetime

print '現在時刻をセット'
set @d=getdate()
print @d
print ''

print '10時間後を指定'
set @d2=dateadd(hour,10,@d)
print @d2
print ''

print '10日時間を指定'
set @d2=dateadd(hour,-10,@d)
print @d2
print ''

print '10日後を指定'
set @d2=dateadd(day,10,@d)
print @d2
print ''

print '10日前を指定'
set @d2=dateadd(day,-10,@d)
print @d2
print ''

print '簡易な計算方法----------'
print '10日後を指定'
set @d3=@d+10
print @d3
print ''

print '10日前を指定'
set @d3=@d-10
print @d3
print ''

print '簡易な計算方法で少数点を使うと----------'
print '0.001日後を指定'
set @d4=@d+0.001
print @d4
print @d4-@d
print convert(nvarchar(36), @d4-@d,21)
declare @dec decimal(11,6)
set @dec=3600*24/1000
print @dec/60

上の例の中に簡易な計算方法も載せておきました。
基本は日単位の計算なので単純な加算、減算なら+10とか-10で計算してくれます。
また、12時間とか6時間という切りの良い時間なら、0.5や0.25と言った指定でできます。

この辺りは好みもありますが、ちゃんとDATEADDを使った方が面倒にならない気もします。
以上、SQL SERVER 日付の加算、減算の開発備忘録でした。

UTF-8 と UTF-8N

UTF-8 と UTF-8N

Webアプリケーションの仕事をしていると、たまにUTF-8でファイルを保存しないといけない時があります。
今の多くのエディタは保存する際に「文字コードの指定」ができるようになっていて助かります。
以前は、Visual stdio を立ち上げて保存したものです。

で、保存使用する際、UTF-8 と UTF-8Nが選べるエディタも有れば、選べないエディタもあることに気が付きました。
結果はご存知の通りBOMを付けるか付けないかの指定方法が違うだけなんですけね。
これって知らない人にはわかりづらいですね。

BOMって?

ちなみにBOMっていうのは、Byte Order Mark のことで、「テキストファイルの文字コードがUTF-8です」とファイルの頭に付けたマークのことです。

BOMが付くか付かないかだけなので、UTF-8 と UTF-8N の文字コードは全く同じUTF-8です。
違いはありません。

Nが付かないファイルは、BOMあり。
Nが付くファイルは、BOMなし。
ってことです。

UTF-8 と UTF-8N?

現在は、基本的にBOMなしで問題ないと思います。
なので、UTF-8Nを選択します。
で、UTF-8 と UTF-8Nが選べないエディタは、たぶんファイル名を記述する横くらいにBOMの扱いをどうするかの指定があると思います。

しかし、付けるように指定が有ったり、読み込み時に問題が出るようならBOM付けて試してみるのも手です。
現在はBOMなしが主流ですが、古いシステムはBOMあり指定もあるかもなので。

以上、UTF-8文字コードでファイルを保存したときにふと思ったので。。。

IX Web Hosting SSLを設定する(更新)

IX Web Hosting SSLを設定する(更新)

Let’s Encryptからもらえる無料のSSL証明書を使い、独自ドメインのSSLを設定したのでその更新時期が来たので更新の開発備忘録です。

まず、IX Web HostingのHome画面から「Web Options」を選択します。

IX Web Hosting SSL設定 home画面

IX Web Hosting SSL設定 home画面

次に、「Select domain to configure hosting parameters」リストが表示されるので、SSLを設定したいドメインもしくはサブドメインを選択します。

IXWebhostingSSL設定 Select domain to configure hosting parameters

IXWebhostingSSL設定
Select domain to configure hosting parameters

次に、「Web Service」設定画面が表示されるので、「SSL Support」項目の「Editアイコン」を選択します。

SSL更新-WebService設定

SSL更新-WebService設定

次に、「Edit SLL」画面が表示されます。

SSL更新

SSL更新

次に、予め入手しておいたSSL Certificate(CERT/SSL証明書)とSSL証明書の秘密鍵(SSL Server Private Key)をコピーして貼り付け、「submit」送信します。
Let’s Encryptで無料のSSLを取得する

正常に処理されると、ひとつ前の「Web Service」設定画面に戻ります。
エラーが出た場合はコピーミスかコピーした情報に間違いが有ると思われるので、エラーメッセージを確認してみてください。
正常に処理されると、下のようになります。

IXWebhostingSSL設定-SSL設定後

IXWebhostingSSL設定-SSL設定後

これで、https://でアクセスすると保護された通信になります。
ただ、今でも「Edit」で「Force SSL Connection」にしても全てがHttps://になりません。
課題が残っていますが、とりあえず更新できたのでこれで良しとします。

以上、IX Web Hosting SSLを設定する(更新)の開発備忘録でした。

HTML5のDOCTYPE宣言

HTML5のDOCTYPE

HTML5のDOCTYPE は非常にシンプルです。

<!DOCTYPE html>

DOCTYPE宣言とは

DOCTYPE宣言とは「Document Type Definition」(DTD)のことで、日本語に訳すと「文書型宣言」となります。
ブラウザに対しどのバージョンのHTMLやXHTMLで書かれているかを宣言しています。
HTML文書の先頭に書く必要があります。

DOCTYPE宣言をブラウザに示すことで、文書を解析するパーサが文書型宣言に指定されたDTDを参照することで、ブラウザが規則に従った妥当な文書か否かを検証することができます。
また、一部のブラウザ(HTMLレンダリングエンジン)は「DOCTYPEスイッチ」と呼ばれる機能を有しています。
これはMIMEタイプとしてtext/htmlを与えられた文書に書かれた文書型宣言の内容によってレンダリングを「標準モード」や「互換モード(Quirksモード)」というように切り替えるユーザに見えやすくすることができます。

DOCTYPE宣言をすると

DOCTYPE宣言をすることで、ブラウザはどのバージョンのHTMLやXHTMLで書かれているかがわかります。
HTML5で書かれている旨宣言をすると、文書型宣言はもはやモード指定以外の意味をなさなくなります。
すなわちHTML5における文書型宣言は、レンダリングを「標準モード」へ切り替えるためだけの、「ほとんど役に立たないが、それでも必要な」ヘッダという役割を担います。

たいした意味はなくなりましたが、それで宣言は必須です。
必ずDOCTYPE宣言を書くようにしましょう。

020番号帯

020番号帯

020番号帯は、2017年1月1日に施行された「電気通信番号規則等の一部を改正する省令」によって新設された「M2Mサービス専用の電話番号」のこと。

M2Mとは「machine to machine (マシン ツー マシン)」の略で電子機器などの機械同士の通信を示しています。

この総務省の発表を受け、大手携帯会社は2017年10月以降に順次020番号を提供すると発表しました。
この背景には、090/080番号帯はすでに枯渇し、その後に割り当てられた070番号帯もそのうち無くなってしまうと言う予測が有るからです。

既にM2Mで繋がっている機器が存在していますし、これからも増える一方です。
人が使用するよりも独立した機械が通信機能を持つことの方が遥かに使用頻度が高くなってくることが予想されます。

家庭内の電子機器は、家に固定電話が有れば家の電話回線からインターネットに繋ぐことができます。
しかし電話回線を持たない家庭も増えてきています。
そんな時はポケットWifiのような機器を家に置くことになりますが、今までは090/080/070を使っていたものが020を使うようになります。
また、独立した機器といえば自動車がすぐに思い浮かびます。
自動車への搭載も020番号帯が使用されるようになります。

020番号帯は、普通の番号と同じように使用できますが、M2M専用にすることで現在の11桁から2桁増やして13桁として使用されることが(今後どうなるかわかりませんが)予定されています。その方が遥かに番号数を確保できるので。

020番号帯の通信費がどうなるかわかりませんが、安くなるといろいろ助かります。
ふと思ったことでした。。。

IX Web Hosting からメールが届きました

IX Web Hostingを検討している方へ報告です。
IX Web Hosting からメールが届きました。

ここから↓↓↓↓↓
Starting February 12, 2017 at 9PM EST, your services will be upgraded to a new server. This upgrade includes updates to backend services and new hardware resulting in improved stability, redundancy, and speed for your websites and email.

We expect this maintenance to be completed within 24 hours but this window may be extended as necessary. During the upgrade, it is likely that services will be unavailable for short periods.

You will not have to make any changes to your websites yourself as we will take care of everything for you and assigned IP addresses and server names will not change. Please check your sites after the maintenance window concludes to make sure that they work as expected and contact us immediately if you notice any issues.

We are in progress of upgrading many of our web, mail, and database servers, and you should also expect to see future notifications for upgrades to those services.

We’ve got our best team overseeing this move, and it is one we have experience with, so we expect everything will go smoothly. As always, if you have any questions, please don’t hesitate to contact us at any time.
ここまで↑↑↑↑↑

2017年2月12日午後9時(米国東部標準時間)からサービスが新しいサーバーにアップグレードされます。このアップグレードには、バックエンドサービスと新しいハードウェアのアップデートが含まれているため、Webサイトと電子メールの安定性、冗長性、スピードが向上します。

このメンテナンスは24時間以内に完了することが期待されますが、このウィンドウ?は必要に応じて延長することができます。アップグレード中、サービスは短期間ですが利用できなくなる可能性があります。

割り当てられたIPアドレスとサーバー名は変更されませんので、お客様のウェブサイトを変更する必要はありません。メンテナンス期間が終了した後、サイトが正常に機能していることを確認し、問題が発生した場合はすぐに我々までご連絡ください。

多くのWebサーバー、メールサーバー、データベースサーバーのアップグレードが進行中であり、これらのサービスへのアップグレードについて今後も通知があるでしょう。

我々はこの動きを監督する最善のチームを持っており、それは経験がありますので、すべてがスムーズに進むと期待しています。いつものように、ご不明な点がございましたら、お気軽にお問い合わせください。

と言う内容でしたが、何が変わるのが気になります。
Business Plus (Win)では、元々OSも「Microsoft Windows Server 2003」と公式サポートは 2015年7月15日に終了していますし。
サポート終了後は、更新とセキュリティ修正プログラムは提供されておわず、この OS を実行するデータセンターのコンプライアンスは失われたままです。

まぁ、それでも格安なので知ってて契約をした訳ですが、気になります。
それにしても、サポート切れのOSやツールを使うあたり、日本と違う自己責任の国なのかも。

以上、気になるメールが来てたのでIX Web Hostingを検討している方へ報告しました。

SQL SERVER 照合順序

SQL SERVER

照合順序

照合順序とは

SQL Server の照合順序とは、データをソートする際の文字の大小関係を比較する基準のことを照合順序 (collation) と呼んでいます。
例えば、「川」と「海」ではどちらが早く取得・表示されるのか、「あ」「ア」「ア」をソートする時どのようにソートされたいのかといった、文字の大小関係を決めているのが照合順序です。

また、ソートだけでなく検索でマッチするかどうかも照合順序で決まります。
「ア」「ア」を同じとみなすかどうかとか。

また、データのインデックス作成時にも照合順序は使われます。
インデックスの項目がキャラクタ( char, nchar, varchar, nvarchar, text, ntext)などの場合、項目の値順にインデックス行を並び替えるために使われます。

仕事で決まった順にソートして表示したり、該当するデータを照合抽出することは当たり前のことで、そのソートや照合する際に照合順序 (文字の大小関係) はとても重要な要素です。

で、照合順序の決め方なのですが、なんか複雑で良くわからないのです・・・

日本語照合順序の違い

ソート順、文字の大小関係の定義が違う。
辞書順に並び変えた場合の並び順が、使用している日本語辞書の順になることを表しています

Japanese_XJIS
Japanese Unicode 2.0(80), Unicode 3.2(90)に対応
Unicode 5.0(100)に対応
Japanese_Bushu_Kakusu 部首画数順、Unicode 5.0(100)に対応
Japanese_Unicode SQL Server 7.0 との互換性のためだけに残されています

単純に考えると、最新版のJapanese_XJISを使えば良いのかと思います。

日本語照合のバージョン

上で日本語辞書を指定し、次はコードのバージョンを指定します。

記載なし(80) SQL Server 2000, Unicode 2.0
90 SQL Server 2005, Unicode 3.2
100 SQL Server 2008, Unicode 5.0

要は、Japanese_100の指定はできないってことですね。
Japanese_XJISは100を指定しなくてもデフォルトで100なのかな?

日本語照合オプション

C : 大文字と小文字の区別
 CS(CaseSensitivity) 大文字と小文字を区別する
 CI(CaseInsensitive) 大文字と小文字を区別しない

A:アクセントの区別
 AS(AccentSensitivity) アクセントを区別する
 AI(AccentInsensitive) アクセントを区別しない
 ※日本語の場合は清音と濁音・半濁音の区別。区別しない場合は AI 。

K:ひらがなとカタカナの区別
 KS(KanatypeSensitive) ひらがなとカタカナを区別する。
 ※区別しない場合はオプションを指定しない。

W:1 バイト文字と 2 バイト文字の区別
 WS(WidthSensitivity) 1 バイト文字と 2 バイト文字を区別する。(w と w 等)
 ※区別しない場合はオプションを指定しない。

SC:Supplementary Character(補助文字)を認識するかどうかの区別
 オプションをしてした場合は、Supplementary Character(補助文字)を認識する。
 ※文字数を返す LEN 等の動作に影響する。
 ※区別しない場合はオプションを指定しない。

日本語照合オプション2

BIN:バイナリ並べ替え
 SQL Server 2000 以前の古いバージョンとの互換目的。
 (最初の一文字のみコードポイントで比較、以降はバイトごとに比較)

BIN2:バイナリ並べ替え
  すべての文字をコードポイントで比較する。

ざっと日本語を取り扱う場合の照合順序を抜粋して書いてみました。
人名や住所なのでソートや抽出を行う時に関与してきますので、抽出がおかしいときは見直してください。

以上、「SQL SERVER 照合順序」についての備忘録でした。

CSS floatの使い方

 CSS

floatの使い方

floatは段組みを使う時によく使う、CSSレイアウトの基本テクニックです。
ぱっと見は解りづらいですし、思った通りのことが出来ないことも良くあります。
自分で簡単なCSSレイアウトを組んでみて、体感して使うことが覚えてしまう早道です。

何も指定しない場合


<div>
 <div style='background-color: red; width:100px;height:50px;'>テスト赤</div>
 <div style='background-color: blue; width:100px;height:50px;'>テスト青</div>
 <div style='background-color: green; width:100px;height:50px;'>テスト緑</div>
 <div style='background-color: yellow; width:100px;height:50px;'>テスト黄色</div>
</div>

css float 指定なし

css float 指定なし


そのまま下方向に流れて表示されます。

これを右に流して表示する場合に CSS で float:left を指定します。

float:left指定すると


<div style="width:400px;height:50px;">
 <div style='background-color: red; width:100px;height:50px; float:left;'>テスト赤</div>
 <div style='background-color: blue; width:100px;height:50px; float:left;'>テスト青</div>
 <div style='background-color: green; width:100px;height:50px; float:left;'>テスト緑</div>
 <div style='background-color: yellow; width:100px;height:50px; float:left;'>テスト黄色</div>
</div>

css float left

css float left


右方向に流れて表示されました。

左に流して表示する場合は CSS に float:right を指定します。
ここには表示しませんが、下に試すためのサンプルコードを記述しておきますので、自ら試して確認してください。


<div style="width:400px;height:50px;">
 <div style='background-color: red; width:100px;height:50px; float:right ;'>テスト赤</div>
 <div style='background-color: blue; width:100px;height:50px; float:right ;'>テスト青</div>
 <div style='background-color: green; width:100px;height:50px; float:right ;'>テスト緑</div>
 <div style='background-color: yellow; width:100px;height:50px; float:right ;'>テスト黄色</div>
</div>

次に最も良くある段組みを作ります。下の段組みはtableで作ってありますが、これを CSS float で作ります。

ヘッダー
メイン 右サイド
フッター

肝心なのは、clear:left を入れることです。
clear:left を入れずに作るとこのようになります。わざとはみ出させて表示しています。
下のサンプルコードで確認してみてください。

css float はみ出してしまう例

css float はみ出してしまう例

clear:left を入れると

<div style="width:400px; clear:right;">
 <div style='background-color: red; width:200px; height:50px;'>ヘッダー</div>
 <div style='background-color: blue; width:100px; height:100px; float:left;'>メイン</div>
 <div style='background-color: green; width:100px; height:100px; float:left;'>右サイド</div>
 <div style='background-color: yellow; width:300px; height:150px; clear:left;'>フッター</div>
</div>
css float 段組み

css float 段組み

ここまでがレイアウトの基本です。
複雑な段組みはこれらの応用ですので、まずは基本のレイアウトをしっかり把握しておきましょう。

※サンプルコードを載せ忘れていましたので、載せました。
以上、CSS floatの使い方の備忘録でした。

カテゴリー: CSS

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を使用するときの問題点」での報告でした。