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

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

新規登録して質問してみよう
ただいま回答率
85.50%
VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

SQL Server

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

Q&A

解決済

3回答

1753閲覧

VBで6桁のinteger、もしくはchar型の数を時刻で表示したい

ryuuzu

総合スコア30

VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

SQL Server

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

0グッド

0クリップ

投稿2020/02/07 07:33

6桁の数値をSQL上でchar(6)型で取得しました。

これをサイト上で〇〇:〇〇といった表示にしたいです。

SQLの表示上では122015(12時20分15秒)で表示されているのを上記の表示にしたいのですが
方法がわかりません。

もともとchar(6)型で設定されていたためか、datetime型としての取得ができません。

別のクエリで取得していたdatetime型のデータは
String.Format("{0:MM/dd(ddd)/HH:mm}", l**t.Tables(0).Rows(a)("****"))

の形で日付からの表示ができたため、VBやSQL自体に問題はなさそうです。

8桁の数値を日付型にするformat(yyyy/mm/dd)などはわかるのですが、

上記のような「122015」という数値を「12:20」という表記にする方法がありますでしょうか?

SQLではinteger型、もしくはchar(6)、char(8)型で取得可能です。

サイト上で表示ができればよいので、datetime型にできなくてもOKです。

よろしくお願いいたします

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2020/02/07 07:51 編集

例えば、0時1分0秒 とかはどうなってるのですか? 時・分・秒は必ず二けたずつ 000100 となっているのですか? 000100 となっているとして、二文字ごとに時・分・秒を入れて 00時01分00秒という文字列を作れば良いのですか? それとも 0時1分0秒 としなければならないとか? どういう変換規則になるのか詳しく書いてください。
ryuuzu

2020/02/07 07:54

時・分・秒はすべて2桁で表示は6桁となっています。000100の場合は「00:01:00」という表表示にしたいと思っています。
退会済みユーザー

退会済みユーザー

2020/02/07 09:07

> 000100の場合は「00:01:00」という表表示にしたいと思っています。 SQL Server からは VB.NET + ADO.NET のコードで "000100" という文字列を取得するところまではできているのですよね。であれば、"000100" という文字列を 2 文字ずつ分割して ":" で連結するという方法でできると思うのですが(プリミティブな方法ではありますが)、何が問題なのでしょう?
ryuuzu

2020/02/09 02:28

ありがとうございました!解決しました! Left(l**t.Tables(0).Rows(a)("****") , 2) + ":" + Mid(l**t.Tables(0).Rows(a)("****") ,3, 2) とやったら表示できました!ベストアンサーにさせていただきたいので回答を頂けませんか?
退会済みユーザー

退会済みユーザー

2020/02/09 02:36

上の私のコメントを回答欄に転記させていただきます。 お手数ですが、回答のコメントとして上の質問者さんのコメント、 解決しました! Left(l**t.Tables(0).Rows(a)("****") , 2) + ":" + Mid(l**t.Tables(0).Rows(a)("****") ,3, 2) とやったら表示できました! を書いていただくようお願いします。Teratail は技術者同士の情報根幹の場所ということですので、後で検索などでここにたどり着いた人などのために情報提供に協力いただけると幸いです。
guest

回答3

0

ベストアンサー

000100の場合は「00:01:00」という表表示にしたいと思っています。

SQL Server からは VB.NET + ADO.NET のコードで "000100" という文字列を取得するところまではできているのですよね。であれば、"000100" という文字列を 2 文字ずつ分割して ":" で連結するという方法でできると思うのですが(プリミティブな方法ではありますが)、何が問題なのでしょう?

投稿2020/02/09 02:36

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

ryuuzu

2020/02/10 04:05

解決しました! Left(l**t.Tables(0).Rows(a)("****") , 2) + ":" + Mid(l**t.Tables(0).Rows(a)("****") ,3, 2) とやったら表示できました!
guest

0

VB.NETだとして。

  • 元が数値なら

(122015/100).ToString("00:00")
12:20
(122015).ToString("00:00:00").SubString(0,5)
12:20

  • 元が文字列なら

"122015".Insert(2, ":").Substring(0,5)
12:20

とか。

投稿2020/02/07 07:49

編集2020/02/07 07:56
Y.H.

総合スコア7914

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

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

ryuuzu

2020/02/09 02:21

ありがとうございます!表示はできたのですが「秒数は表示しないでほしい」と言われたため、char型のまま1~4文字目を表示する方法を取らせていただきました。
guest

0

DateTime.ParseExactメソッドを利用されてはどうでしょうか

投稿2020/02/07 07:42

YAmaGNZ

総合スコア10222

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

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

ryuuzu

2020/02/09 02:21

ありがとうございます!表示はできたのですが「秒数は表示しないでほしい」と言われたため、char型のまま1~4文字目を表示する方法を取らせていただきました。Parseメソッドは今後も使わせていただきます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問