質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

パラメータ

関数やプログラム実行時に与える設定値をパラメータと呼びます。

Q&A

解決済

2回答

2689閲覧

パラメータ'2021-06-12'を渡したい

ypk

総合スコア83

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

パラメータ

関数やプログラム実行時に与える設定値をパラメータと呼びます。

0グッド

0クリップ

投稿2021/06/12 10:09

SQL Server 2008 Management Studioにて、プロシージャを作成し、execを利用して実行することを試みています。

exec A(プロシージャ名) '2021-6-12'

といった具合に、'2021-6-12'というパラメータを引数としてプロシージャAを実行しようとしています。

CREATE PROCEDURE A @実行日 datetime AS BEGIN declare @実行日2 datetime set   @実行日2 = @実行日 select * from A_TBL where @実行日2 = A_TBL.実行日 END;

しかし、どういうわけか

データ型varcharをdatetimeに変換中にエラーが発生しました

というエラーが発生してしまいます。
どのように対応したらよいのでしょうか。お力を貸していただけると嬉しいです。
よろしくお願いいたします。

環境:SQL Server 2008 Management Studio

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

exec A(プロシージャ名) '2021-06-12'としても問題は発生するでしょうか?

投稿2021/06/12 11:12

neko_the_shadow

総合スコア2273

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ypk

2021/06/12 11:30

現場で開発作業をしていて、今すぐ確認はできないのですが、月曜日に確認してみます。 '2021-6-12'ではなく'2021-06-12'とするべきなのですね、、、! ありがとうございます。
guest

0

メッセージの通り**varchar(文字列)datetime(日付型)**に変換できないからエラーが出たって事ですね。
基本的に代入や評価は同じ型で行います。

なので、型を合わせる為にcastconvertを使うと良いかと思います。

データ型の変換 (データベース エンジン)
https://docs.microsoft.com/ja-jp/sql/t-sql/data-types/data-type-conversion-database-engine?view=sql-server-ver15

追記

こっちの方が分かりやすそうですね。
CAST および CONVERT (Transact-SQL)
https://docs.microsoft.com/ja-jp/sql/t-sql/functions/cast-and-convert-transact-sql?view=sql-server-ver15

投稿2021/06/12 10:19

編集2021/06/12 10:32
neonemo

総合スコア191

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ypk

2021/06/12 10:23

ありがとうございます。 '2021-6-12'はvarchar(文字列)になってしまうのですね、、、これは意図しないものです。 '2021-6-12'ををdatetime(日付型)のパラメータとしたいのですが、そういうことは難しいのでしょうか?
neonemo

2021/06/12 10:36

変換自体は出来るので、文字列で受け取って関数内でdatetimeにするなんて事も出来ます。 回答に書いたURLとその派生ページで解決できると思います。 まずは一読し、お試しになってください。 読むのが厳しい場合は、この辺のキーワードで個人ブログなどを探すのも良いかと思います。 【SQL Server varchar datetime 変換】とか【SQL Server convert 使い方】等。 頑張ってください。 個人的に、公式や専用フォーラム以外のURLを示すのには抵抗があるのでご了承下さい。
ypk

2021/06/12 11:29

いろいろご丁寧にありがとうございます。 set   @実行日2 = CAST ( @実行日 AS datetime ) でうまくいくか、確認してみます! ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問