こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

SQLServerでtime型への変換

SQLServer2008R2 Expressを始めて使っています。
Microsoft SQL Server Management Studioで接続してビューを作成。

SQLクエリでdatetimeのデータとtime型の引き算をして、時間の計算結果を返してもらおうとしています。

テーブル名 test_table
col1 = datetime型
col2 = time型

SELECT (CAST(col1 AS time(7)) - col2) FROM test_table;

正しいか正しくないかはまだちょっとわからないのですが、上のようなSQLを実行したいのです。
しかし、
SELECT CAST('2011-01-01 01:00:00' AS time(7)) AS test;

というテストを行う段階で「timeメソッドを呼び出せません」とエラーが返ってきます。
書いてるものが違うのか、何か設定そのものが違うのでしょうか。

以下を参考にしました。
http://msdn.microsoft.com/ja-jp/library/bb677243.aspx

凄い初歩的な問題の気がするのですが、何処を調べればいいのかだけでも結構ですので、何かアドバイスがいただきたいです。。
よろしくお願いいたします。

投稿日時 - 2011-08-23 19:23:35

QNo.6962712

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

お使いのバージョンは本当に「2008R2」でしょうか?
「2008R2」のExpress版はまだ出てなかった気もするのですが。

TIME型が追加されたのは2008からです。一度バージョンを確認してみてください。

投稿日時 - 2011-08-25 16:06:35

補足

ありがとうございます。

接続先にカーソル乗せると[SQL Server 10.50.1617]と出てます。
スタートメニューからはSQL Server 2008 R2と表示されているので、そこからManagement Studioを利用していました。

サーバープロパティを開くとMicrosoft SQL Server Express Editionと書いてるので、多分2008R2 Expressというのを使っていると思うのですが、、、

以下を参考にインストールを実施しました。
http://blogs.msdn.com/b/osamum/archive/2011/01/07/sql-server-2008-r2-express.aspx

投稿日時 - 2011-08-25 19:30:14

ANo.1

単純に
select col1 - col2 from test_table
ではダメですか?
col1からcol2前の日付時刻を返します。

投稿日時 - 2011-08-23 20:39:46

補足

datetimeからtimeを計算できるんですね。これも知りませんでした。。

すいません、質問にちゃんと書いてなかったのですが、
(col1)10:00 - (col2)9:00 = 1:00 というような
col1の時刻xx:xxとcol2の時刻yy:yyとを比較するために、col1の時刻だけが欲しくてCASTをしようとしていました。

投稿日時 - 2011-08-23 22:11:11