ラベル SQL Server の投稿を表示しています。 すべての投稿を表示
ラベル SQL Server の投稿を表示しています。 すべての投稿を表示

2017/03/14

SQL Serverで先月、翌月、月初、月末の日付の求め方を解説する

SIer時代のメモを発掘したので、せっかくなので共有のためにここにまとめる。

SQL Serverを使っていて、伝票や請求情報、申請情報などを抽出するときに先月、翌月、月初、月末で検索したいときがある。その方法をなるべくわかりやすく解説する。
@TODAY = '2015/02/27'
-- 先月
SELECT DATEADD(MONTH, -1, @TODAY)

-- 翌月
SELECT DATEADD(MONTH, 1, @TODAY)

-- 月初 → 2015/02/01
SELECT DATEADD(DAY, 1-DATEPART(DAY, @TODAY), @TODAY)

-- 月末
SELECT DATEADD(DAY,-1,DATEADD(MONTH,1,DATEADD(DAY,1-DATEPART(DAY,@TODAY),@TODAY)))

先月と翌月の求め方は簡単で、DATEADD関数を使う。
第1引数がdatepart(YEAR、MONTH、DAY、HOURなど)を指定する。
第2引数が日付に対してどれだけ加算するかを指定する。
第3引数が基準となる日付。今回はTODAYという変数を使っているが、GETDATE関数を使えば今日のシステム日付が取得できる。

2016/08/16

SQL Serverのインストール・セットアップでつまづいたこといろいろ

SQL Serverのセットアップをしているときに、躓いたり、迷ったりしたことがたくさんあったので、FAQ方式でまとめる。
2年半前にSIerをやってたときにとったメモなので、SQL Server 2008 R2でのみ動作確認している。

2014/10/04

Nullと空文字の扱いにハマった(Oracle vs SQL Server)

Oracle歴が長いプログラマが、SQL Serverでの開発を行った時にハマったのが、Nullと空文字("")の扱いの違いだった。

結論から言うと、以下のようになっている。
  • Oracle: 空文字 ≒ Null
  • SQL Server:空文字 ≠ Null

OracleはNullと空文字が統一に使われているが、SQL ServerではNullと空文字では違う動作する。
OracleのプロジェクトからSQL Serverのプロジェクトに変わった時に、注意が必要だ。


2014/07/12

【SQL Server】ユーザーが削除できないときの対処法

SQL Serverでバックアップファイルを復元すると、ユーザ情報を一旦削除して再作成してからでないとログインできなくなる仕様(バグ?)がある。
しかし、ユーザを削除するときに、エラーが発生し削除できないことがある。

以下、実際の業務で出会ったら2つのエラーについて、その原因対処法をまとめる。
※SQL Server Management Studioで操作することが前提

  1. Transact-SQL ステートメントまたはバッチの実行中に例外が発生しました。
  2. データベース プリンシパルは、データベースの スキーマ を所有しているので、削除できません。

2013/03/16

SQL Server 2008 R2 のインストール手順

C# の学習を進めるうえで、SQL Server をインストールしたので、
その手順をまとめます。

今回使用したエディションは SQL Server 2008 R2 Express(無償) です。


2年ほど前に仕事で Enterprise エディション を使ったので、
そのときのメモも一緒に書いていきます。