YYYYMMDDhhmmss形式の文字列を日付時刻に変換・計算する方法

このQ&Aのポイント
  • YYYYMMDDhhmmss形式の文字列を日付時刻に変換・計算する方法についてお尋ねです。テーブルにはこの形式の列があり、時刻計算を行いたいですが、方法がわかりません。
  • 日付時刻を示すYYYYMMDDhhmmss形式の文字列を変換・計算する方法についての質問です。例えば1秒加算したい場合、どのようにすればよいのでしょうか。
  • テーブルにYYYYMMDDhhmmss形式の列があり、その値を日付時刻として計算したいです。しかし、文字列から変換する方法がわかりません。お知恵を拝借したいです。
回答を見る
  • ベストアンサー

YYYYMMDDhhmmss形式の文字列を日付時刻に変換・計算する方法

YYYYMMDDhhmmss形式の文字列を日付時刻に変換・計算する方法 お世話になっております。 今回の質問内容なのですが、 あるテーブルにYYYYMMDDhhmmss形式(varchar(14))の列がありまして、 この値の時刻計算を行いたいと思っております。 YYYY/MM/DD hh:mm:ss形式であれば、DATEADD関数で 計算が可能なのですが、やり方がわからず苦戦しております。 例えば1秒加算させたいと思い、以下のSQL文を実行してみたのですが、 SELECT DATEADD(second,1,(CONVERT(DATETIME,'20100312111111'))) 「文字列から日付/時刻に変換できませんでした。」というエラーが 発生してダメでした。 時刻部分だけ取り出して、それに時分秒を分ける「:」をつけて変換し 計算するという方法は極力避けたいと思っています。 何かいい方法がありましたら、ご教示のほどよろしくお願い致します。

  • ctske
  • お礼率81% (44/54)

質問者が選んだベストアンサー

  • ベストアンサー
  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.1

>時刻部分だけ取り出して、それに時分秒を分ける「:」をつけて変換し計算するという方法 この内容的にはシンプルな質問に回答がつかないのは、つまり他に方法がないということです。 毎回それをやるのがいやならばスカラー関数を作ってはどうですか。

ctske
質問者

お礼

ご回答ありがとうございます。 調べた限りでは、それらしいのは見つけられませんでしたので やはり方法はないのですね。 >毎回それをやるのがいやならばスカラー関数を作ってはどうですか。 今回の件は、この対応でいこうと思います。 助かりました。ありがとうございました。

関連するQ&A

  • 日付、文字列変換に関して

    日付、文字列変換に関して 文字列の日付に対し、プラス1ヶ月した後、また文字列に戻すような 仕掛けを考えています。 そこで、以下のような記述をしましたが、どうも最後の文字列への変換が うまくいきません。 何が原因でしょうか。。。 DateTime A_time; DateTime B_time; string AFormat; AFormat = "yyyyMM"; A_time = DateTime.ParseExact("201012", AFormat, null); B_time = A_time.AddMonths(1); string C_time = B_time.ToString("YYYY/MM"); 初歩的な内容で申し訳ありませんが、よろしくお願いします。

  • 日付型→文字列

    SQLServer2005の環境にて、 日付型の項目(YYYY/MM/DD HH:MM:SS)から日付のみを抽出したい場合、 現在SUBSTRING(CONVERT(VARCHAR,AA),1,10) と変換を行っているのですが、結果が「MM DD YYYY」となってしまいます。 「YYYY/MM/DD」の形式で取得するにはどのようなSQL文にすればよろしいのでしょうか。

  • 日付や時刻の"01"を" 1"に変換したいです。

    下記のような問題で悩んでいます。何かよいアイディアがありましたら教えて下さい。 【要件】 ・SimpleDateFormatで指定された書式の文字列にした後、年月日時分秒ミリ秒の"01"~"09"を" 1"~" 9"のように前0を半角スペースに一括変換したい(年は書式がyy形式の場合のみ)。 ・SimpleDateFormatへの書式はエラーが起きない限りどんなものでも受け入れる(通常、書くわけがない書式についても)。 例) "yyyy/MM/dd HH:mm:ss:SSS" "'yyyy/MM/dd HH:mm:ss:SSS形式:'yyyy/MM/dd HH:mm:ss:SSS"  ※''の中にあるMMはテキストなので英字のまま。 "yyyy/MMMMMMMMMMMMMMMMMMMM/dd HH:mm:ss:SSS"  ※Mの数は不明 "yyyy/MM/dd MM MM HH:mm:ss:SSS"  ※月の表示指定が複数 引数 :日付(yyyyMMddHHmmssSSS形式), SimpleDateFormatへの書式 戻り値:SimpleDateFormatで変換後に"01"~"09"を" 1"~" 9"にした文字列 自分なりの検討案としては下記になります。 a.引数の書式をそのままSimpleDateFormatに引き渡ずに、一部修正してから呼び出す。 例)"yyyy/MM/dd HH:mm:ss:SSS"→yyyy/_M/_d _H:_m:_s:__S" ※"_"は半角スペースです。 実際はMやdなどが2桁になる場合は変換しません。 かなりごりごり200行ぐらい試しに書いたのですが、対応できないケースが出てきてその都度エンドレス状態です。 ちょっとこのまま実装するわけにいきません。いつバグがでるか・・・。 b.SimpleDateFormatで変換後に年月日時分秒ミリ秒に該当する箇所に"01"~"09"があったら置換する。  引数の書式からMMやddのindexを保持して、SimpleDateFormatで変換後の該当indexに置換。 例) 書式:"yyyy/MM/dd_HH:mm:ss:SSS" 日付:"20090101010101001" "2009/01/01_01:01:01:001"→"2009/_1/_1__1:_1:_1:__1" ※"_"は半角スペースです。 但し前提として、書式とSimpleDateFormatで変換後の文字列が1対1になっている必要があります。 単純な例ですと 書式:"yyyy/MMMM/dd HH:mm:ss:SSS" 書式のddは11~12桁目ですが、SimpleDateFormatで変換後は下記のようにインデックスがずれます。 "2009/1月/01 01:01:01:001" "2009/12月/01 01:01:01:001" もしかしたら下記のような感じで吸収できるのかもしれませんが、ちょっと個人的に出来そうに思えませんでした。 月が1桁 かつ 書式が"M"の場合 月が1桁 かつ 書式が"MM"の場合 月が1桁 かつ 書式が"MMM"の場合 月が1桁 かつ 書式が"MMMM"の場合 月が1桁 かつ 書式が"Mxn"の場合 月が2桁 かつ 書式が"M"の場合 月が2桁 かつ 書式が"MM"の場合 月が2桁 かつ 書式が"MMM"の場合 月が2桁 かつ 書式が"MMMM"の場合 月が2桁 かつ 書式が"Mxn"の場合 ここ1,2週間ほど煮詰まっています。どなたかアドバイス頂けると助かります。 自分的なネックは書式が限りなくフリー形式なところです。

    • ベストアンサー
    • Java
  • アプリから受け取った文字列を日付型に出来ない

    いつもお世話になっています。 タイトルにもあります通り、 アプリから受け取った文字列の日付型変換が上手くいかず失敗します。 状況は下記です。 SQL SERVER 2005に、 アプリから2っの文字列を受け取り、その文字列を日付型に変換し、 日付範囲検索をする。といったストアドを作成しました。 アプリ開発環境はVisualStudio2008、C#のウィンドゥズフォームです。 ストアド自体はManagement Studio上で日付型変換可能な 文字列2っを渡し、単体で実行すると期待通りの動作をします。 しかしアプリから文字列を受け取り実行すると、 「文字列から datetime 型に変換中、変換に失敗しました。」 というエラーがアプリ側に返されます。 しかし、この時アプリが渡す文字列をコピー&ペーストで ManagementStudioのクエリデザイナで実行すると上手く行きます。 アプリから日付変換前の文字列を渡す時に必要な何かが抜けているのでしょうか?ご教授お願いします。 ---ストアドを呼ぶアプリ側--- string kaishibi; string syuryobi; kaishibi += "1753/01/01"; syuryobi += "9999/12/31"; System.Data.SqlClient.SqlCommand hCommand = cSqlConnection.CreateCommand(); hCommand.CommandText = "EXECUTE [ストアド名] kaishibi,syuryobi"; System.Data.SqlClient.SqlDataReader cReader = hCommand.ExecuteReader(); (ここでエラー、「文字列から datetime 型に変換中、変換に失敗しました」) --ストアド側-- ALTER PROCEDURE [ストアド名]  @startData VARCHAR(50),  @endData VARCHAR(50) DECLARE @kaishibi DATETIME, @syuuryoubi DATETIME SET @kaishibi = CONVERT(VARCHAR,@startData,120) SET @syuuryoubi = CONVERT(VARCHAR,@enddata,120) SELECT LOGNO FROM LOG_TBL WHERE DateTime between @kaishibi and @syuuryoubi

  • 日付形式の変換

    はじめまして Perlで日付形式の変換をしたいと思っています。 RFC1123形式(2 Mar 2006 04:28:25 -0800)から yyyy/mm/dd hh:mm:ssの形式に変換したいのです。 色々と調べましたが、適当なヒントがあるところがありません でした。 どうぞ、関連サイトでも構いませんので、ご回答お願いいたします。

    • ベストアンサー
    • Perl
  • EXCELで文字列を日付に変換する方法

    EXCELで、 23. 5. 1 のような文字列を 2011/5/1 のような日付形式に変換する方法はありますか?  

  • 文字列から読み込んだ時刻の操作について。

    こんにちは。お時間のある時にお願いします。 文字列表記された時刻を、ある特定のフォーマットに変換し、尚且つタイムゾーンの計算をして、ソートさせるプログラムを組んでいます。 時間の加減算には、Calenderクラス、 String型からDate型に変換するには、SimpleDateFormatクラスが良さそうだ、と思って触っています。 ----- String strPreTime = "Sun, 11 Dec 2005 03:00:38 +0900"; //変換後時刻フォーマット -> 2005-12-11T03:00:38+0900 SimpleDateFormat sdf = new SimpleDateFormat(); sdf.setDateFormatSymbols(new DateFormatSymbols(Locale.US)); //日付の出力形式を設定 sdf.applyPattern("EEE, d MMM yyyy HH:mm:ss Z"); Date dat = sdf.parse(strPreTime); System.out.println("test1: "+dat); sdf.applyPattern("yyyy-MM-dd'T'HH:mm:ssZ"); String dat2 = sdf.format(dat); System.out.println("test2: " +dat2); ----- 出力結果: test1: Sun Dec 11 03:00:38 JST 2005 test2: 2005-12-11T03:00:38+0900 となりますが、test1の出力結果が、sdf.applyPattern("EEE, d MMM yyyy HH:mm:ss Z");で指定した出力形式になっておらず、頭を悩ませています。 どこを直せば、指定した通りの出力形式になるのか、教えてください。 また、Date型の時にタイムゾーンだけを抽出する、というのはどうしたらいいでしょうか?

    • ベストアンサー
    • Java
  • SQLServer2005で文字列の時刻の合計を出す方法はありますか?

    SQLServer2005で以下のテーブルがあります。 [Day] [Time]   1  1:30   1  2:00   2  4:45   3  2:30   3  1:45 Dayフィールド、Timeフィールドは共にvarchar2です。 (Timeには"1:30"の文字列が入っています) このテーブルを読み込むとき、各日ごとの合計を計算して出力するSQL文がわかりません。 ■■ 出力イメージ ■■ Day Time   1 3:30   2 4:45   3 4:15 DateAdd関数やMAX関数等を使って考えましたが実現できませんでした。 こういう処理をSQL文でおこなうことは可能でしょうか? もし実現可能な場合、方法やだいたいのやり方でも結構ですのでご教示いただけませんでしょうか? TimeフィールドがDatetime型から可能でしょうか? それとも、プロシージャや読み込んでから別途計算しなおさないと無理でしょうか? よろしくお願いします。

  • CSVファイルのエクスポート項目の日付表示形式

    顧客ファイルをショッピングカートからエクスポートして、CRMツールにインポートする作業を行っています。 その際に、ショッピングカート側から配送日の日付の表示形式が例えば「2014/4/13 10:48:00」であれば、「20140413104800」(YYYYMMDDhhmmss)という表示形式でしかエクスポートができません。その一方で、受ける側のCRMツールは日付の取り込み形式が「yyyy/mm/dd hh:mm」に限定されています。 そのため「YYYYMMDDhhmmss」の表示形式を「yyyy/mm/dd hh:mm」に変更する必要があります。ソフトにはExcel2013を使用しており、データ数は1日50~60件ほどのため、一括変換する方法を模索しています。 ショッピングカート側からダウンロードしたCSVファイルをExcel2013で取り込み、CRMツールで取り込み可能な「yyyy/mm/dd hh:mm」の書式に変換する方法を教えて下さい。

  • 「EXCEL」VBAで日付を変換

    ファイルを保存する際に現在時刻を元にファイル名を作成しそれで保存する、というものを作っています。 ですが、 yyyy/mm/dd hh:mm:ss ↓ yyyymmddhhmmss というような変換がウマくいかずに困っています。 どなたか、ご教授頂きたいです。