タグアーカイブ SQL Server

日付のフォーマット(SQL Server)

CONVERTとか

   DECLARE @myDate DATETIME
   SET @myDate= '2005/8/11 12:34:56:789'

YYMMDD系

   SELECT '102' ,CONVERT(VARCHAR(20),@myDate,102) --2005.08.11
   SELECT '120' ,CONVERT(VARCHAR(30),@myDate,120) --2005-08-11 12:34:56
   SELECT '111' ,CONVERT(VARCHAR(20),@myDate,111) --2005/08/11
   SELECT '112' ,CONVERT(VARCHAR(20),@myDate,112) --20050811
   SELECT '121' ,CONVERT(VARCHAR(30),@myDate,121) --2005-08-11 12:34:56.790
   SELECT '126' ,CONVERT(VARCHAR(30),@myDate,126) --2005-08-11T12:34:56.790
   SELECT '2' ,CONVERT(VARCHAR(30),@myDate,2) --05.08.11
   SELECT '11' ,CONVERT(VARCHAR(30),@myDate,11) --05/08/11
   SELECT '12' ,CONVERT(VARCHAR(30),@myDate,12) --050811

YYMM系

   SELECT '112' ,CONVERT(VARCHAR(6),@myDate,112) --200508
   SELECT '12' ,CONVERT(VARCHAR(4),@myDate,12) --0508

MMDDYY系

   SELECT '100' ,CONVERT(VARCHAR(20),@myDate,100) --08 11 2005 12:34PM
   SELECT '101' ,CONVERT(VARCHAR(20),@myDate,101) --08/11/2005
   SELECT '107' ,CONVERT(VARCHAR(20),@myDate,107) --08 11, 2005
   SELECT '109' ,CONVERT(VARCHAR(30),@myDate,109) --08 11 2005 12:34:56:790PM
   SELECT '110' ,CONVERT(VARCHAR(30),@myDate,110) --08-11-2005
   SELECT '1' ,CONVERT(VARCHAR(30),@myDate,1) --08/11/05
   SELECT '7' ,CONVERT(VARCHAR(30),@myDate,7) --08 11, 05
   SELECT '10' ,CONVERT(VARCHAR(30),@myDate,10) --08-11-05
   SELECT '1' ,CONVERT(VARCHAR(5),@myDate,101) --08/11
   SELECT '101' ,CONVERT(VARCHAR(5),@myDate,101) --08/11

DDMMYY系

   SELECT '103' ,CONVERT(VARCHAR(20),@myDate,103) --11/08/2005
   SELECT '104' ,CONVERT(VARCHAR(20),@myDate,104) --11.08.2005
   SELECT '105' ,CONVERT(VARCHAR(20),@myDate,105) --11-08-2005
   SELECT '106' ,CONVERT(VARCHAR(20),@myDate,106) --11 08 2005
   SELECT '113' ,CONVERT(VARCHAR(30),@myDate,113) --11 08 2005 12:34:56:790
   SELECT '3' ,CONVERT(VARCHAR(30),@myDate,3) --11/08/05
   SELECT '4' ,CONVERT(VARCHAR(30),@myDate,4) --11.08.05
   SELECT '5' ,CONVERT(VARCHAR(30),@myDate,5) --11-08-05
   SELECT '6' ,CONVERT(VARCHAR(30),@myDate,6) --11 08 05

時刻系

   SELECT '108' ,CONVERT(VARCHAR(20),@myDate,108) --12:34:56
   SELECT '8' ,CONVERT(VARCHAR(30),@myDate,8) --12:34:56
   SELECT '114' ,CONVERT(VARCHAR(20),@myDate,114) --12:34:56:790
   SELECT '14' ,CONVERT(VARCHAR(30),@myDate,14) --12:34:56:790

逆引き

   --yyyymmdd
   --yyyy/mm/dd
   SELECT '112' ,CONVERT(VARCHAR(20),@myDate,112)
   SELECT '111' ,CONVERT(VARCHAR(20),@myDate,111)
   --yyyymm
   --yyyy/mm
   SELECT '112' ,CONVERT(VARCHAR(6),@myDate,112)
   SELECT '111' ,CONVERT(VARCHAR(7),@myDate,111)
   --yyyy
   SELECT '112' ,CONVERT(VARCHAR(4),@myDate,112)
   --yymm
   SELECT '12' ,CONVERT(VARCHAR(4),@myDate,12)
   --yy/mm
   SELECT '11' ,CONVERT(VARCHAR(5),@myDate,11)
   --mmdd
   SELECT '112' ,SUBSTRING(CONVERT(VARCHAR(8),@myDate,112),5,4)
   --mm/dd
   SELECT '101' ,CONVERT(VARCHAR(5),@myDate,101)

Insert時に新しく付与されたIDの取得方法(SQL Server)

IDENTITYプロパティ

SQL Serverに一意のIDを生成させる方法として、列にIDENTITYプロパティを指定する方法があります。 IDENTITYプロパティには次の特徴があります。

   * ひとつのテーブルのひとつの列にしか指定できません。
   * 指定する列のデータ型はint型、bigint型、smallint型、tinyint型、decimal型、numeric型に限ります。
   * (設定により変更可能ですが)基本的に値のセットは出来ません。

IDENTITYを指定した列に値を挿入したい場合は、IDENTITY_INSERTプロパティをONに設定します。 この設定は同一セッション内でのみ有効です。

BEGIN TRANSACTION SERIALIZABLE;

INSERT INTO …

SELECT SCOPE_IDENTITY();

COMMIT TRANSACTION;

IDENTITY列の番号リセット(SQL Server)

SQLServerで、Identity属性を使用して自動的に番号をセットしている項目があります。
この採番を1からやり直したい時

DBCC CHECKIDENT (tablename ,RESEED ,0)
にて変更可能です。
0の部分を戻したい値に変更する事も可能です。