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

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

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

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

Q&A

解決済

2回答

2595閲覧

文字列変換で、数値に変換はできるが日付型に変換できない

yasabe

総合スコア2

SQL Server

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

0グッド

0クリップ

投稿2023/10/30 05:13

編集2023/10/30 06:21

実現したいこと

Datediffでテーブル中の日付と現在日付の月数差分を求めたい

前提

SqlServerで
Datediffでテーブル中の日付と現在日付の月数差分を求めたいのですが、その前の日付変換でエラーになります。
変換対象のカラムのデータ型はNvarcharです。

期日_6
20161214

発生している問題・エラーメッセージ

メッセージ 241、レベル 16、状態 1、行 15
文字列から日付と時刻、またはそのいずれかへの変換中に、変換が失敗しました。

該当のソースコード

SELECT CONVERT( date ,kk.期日_6) from T_YL_顧客 as kk

試したこと

SELECT CONVERT( int ,kk.期日_6) from T_YL_顧客 as kk
日付型ではなく、数値型には変換できました。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答2

0

自己解決

そもそもはDatediffで日付計算をしたいがために日付変換の質問を投稿しましたが
nvarcharは暗黙変換されるとことで、そのまま下記のように式に突っ込んでも計算されました。
CONVERT使用したものとしてないもの2つは同様の結果が得られました。

--------------------------------------------------------------- select kk.顧客番号, Format(GETDATE(),'yyyyMMdd') as 現在日付, kk.期日_6, DateDiff("m", kk.期日_6, Format(GETDATE(),'yyyyMMdd')) AS 月数差分 from T_顧客 as kk where kk.顧客番号 = '12345678' --------------------------------------------------------------- select kk.顧客番号, Format(GETDATE(),'yyyyMMdd') as 現在日付, kk.期日_6, DateDiff("m", CONVERT(date, kk.期日_6, 112), Format(GETDATE(),'yyyyMMdd')) AS 月数差分 from T_YL_顧客 as kk where kk.顧客番号 = '12345678' ---------------------------------------------------------------```

投稿2023/10/31 01:24

yasabe

総合スコア2

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

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

0

どういう文字列を日付型に変換しようとしてるんでしょうか
日付型として認識できないような文字列なのであれば、何をどうあがいても変換できませんよ

投稿2023/10/30 05:59

y_waiwai

総合スコア88163

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

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

yasabe

2023/10/30 06:20

下記の文字列データです。 期日_6 ------ 20161214
y_waiwai

2023/10/30 07:09

それをどういうふうに日付型にしたいんでしょうか くりかえしますが、それをそのまま日付型にはできません
yasabe

2023/10/30 07:56

YYYY/MM/DDです。
y_waiwai

2023/10/30 09:08

なら、日付型への変換メソッドでそういうフォーマットだと指定する必要があります 具体的なコードは提示できませんが、ぐぐるなりすれば用例などは出てくるのでは
yasabe

2023/10/31 00:42 編集

ありがとうございます。引数に‘111’を指定して実行してもうまくいかず なぜかわからずでしたが、ほかの引数がまちがっていました。 もともとDatediffで月数計算をしたかったのですが、 nvarcharは暗黙変換されるのでそのカラム毎つっこんでも計算されることを学びました。 お付き合いいただきありがとうございました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問