小さい会社の1人SEの開発記というか奮戦記

  1. SQL Server
  2. 49747 view

DateTime型に対するInsertとUpdate【SQL Server】

ExcelからVBAを使ってDatetime型のデータをSQL文で更新しようとすると少し迷うところがありますよね。今回はポイントになる文字列で年月日時分秒をどう表すかについてまとめます。

いきなり結論

「SQL文でDateTime型のデータを更新する場合は年月日時分秒のデータを ‘yyyy-MM-dd hh:mm:ss’ の形式で渡します。」

ポイントが分かればいい人はたぶんこれだけでOKですね。

Now()を変換して変数TXT_DATETIMEに代入する例
Dim TXT_DATETIME As String
TXT_DATETIME = “‘” & Format(Now(),”yyyy-mm-dd hh:mm:ss”) & “‘”
シングルクォートは実際のSQL文で付けた方がプログラム的にはシンプルかもしれません。

以下でもう少し詳しい例を記述します。

サンプルのデータ構造

T_TESTというテーブルで動作テストします

CREATE TABLE [dbo].[T_TEST](
	[ID] [int] IDENTITY(1,1) NOT NULL,
	[TEXT1] [nvarchar](50) NULL,
	[DAYTIME1] [datetime] NULL
)

Insert文の例

TEXT1にAAA、DAYTIME1に2019/3/28 1:23:45を挿入する場合

直接SQLを流す

INSERT INTO [dbo].[T_TEST]
([TEXT1]
,[DAYTIME1])
VALUES
(‘AAA’
,‘2019-03-28 01:23:45’)

VBAでの例

TXT_SQLと言う変数にSQL文を入れる場合。(現在時刻)

Dim TXT_SQL As String
TXT_SQL = “INSERT INTO [dbo].[T_TEST] ([TEXT1],[DAYTIME1]) ”
TXT_SQL = TXT_SQL & “([TEXT1],[DAYTIME1]) ”
TXT_SQL = TXT_SQL & “VALUES ”
TXT_SQL = TXT_SQL & “(‘AAA’,'” & Format(Now(),”yyyy-mm-dd hh:mm:ss”) & “‘)”

Update文の例

TEXT1=’AAA’で、DAYTIME1を現在時刻に更新する場合

直接SQLを流す

UPDATE [dbo].[T_TEST]
SET [DAYTIME1] = getdate()
WHERE TEXT1 = ‘AAA’

VBAでの例

TXT_SQLと言う変数にSQL文を入れる場合。

Dim TXT_SQL As String
TXT_SQL = “UPDATE [dbo].[T_TEST] ”
TXT_SQL = TXT_SQL & “SET [DAYTIME1] = getdate()
TXT_SQL = TXT_SQL & “WHERE TEXT1 = ‘AAA'”

または

Dim TXT_SQL As String
TXT_SQL = “UPDATE [dbo].[T_TEST] ”
TXT_SQL = TXT_SQL & “SET [DAYTIME1] = ‘” & Format(Now(),”yyyy-mm-dd hh:mm:ss”) & “‘ ”
TXT_SQL = TXT_SQL & “WHERE TEXT1 = ‘AAA'”

まとめ

簡単な例ですが、基本的なところは押さえておきました。

少しでも参考になればと思います。

SQL Serverの最近記事

  1. SQL文で今日から7日前までを指定する

  2. CASE文でビューに分岐処理を実装する【SQL Server】

  3. 変更の保存が許可されていません【SQL Server】

  4. Select Into でテーブルを別のマシンにコピーする【SQL Server】

  5. IN句+サブクエリを使ってデーターを削除する【SQL Server】

関連記事

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

CAPTCHA


お薦め書籍

最近の記事

  1. Access

    Accessの数値型ではまる・・・。
  2. Excel

    日本語をエンコードする【Excel VBA】
  3. Access

    クエリで日付から曜日を算出する。【Access】
  4. PCパーツ

    ASUS AMD Ryzen 4000 シリーズ搭載小型ベア…
  5. Microsoft365

    コンデジをTeamsのWebカメラに使う
  6. SQL Server

    SQL文で今日から7日前までを指定する