1

テーブルには 2 つの列があり、1 つは時間をキャプチャし、もう 1 つは日付をキャプチャします。残念ながら、どちらも varchar() です。2 つのフィールドを取得して連結し、日時に変換する必要があります。

私はこれでそれを達成しようとしています:

select CONVERT(datetime,(select txt_returned_date+' '+CONVERT(varchar(20),CONVERT(TIME,txt_time_returned))),126) 
from table_name

次のエラー メッセージが表示されます。

Conversion failed when converting date and/or time from character string.

日付は文字列として「20130308」としてキャプチャされています。時間は文字列として「4:27 PM」としてキャプチャされています

ここで行っているのは、時刻の文字列を TIME に変換してから、varchar に戻すことです。次に、それらを連結しています。これは単独で機能しますが、クエリ全体に CONVERT(datetime) を導入すると、エラーが発生します。

これを達成しようとする助けは役に立ちます。ありがとう!

4

3 に答える 3

4

DATETIME に変換されたら、DATE 値と TIME 値を連結できます。VARCHAR として格納されている DATE 列と TIME 列を連結するサンプルを次に示します。

-- Set up some variables to test with
DECLARE @myTime TIME = GETDATE()
    , @myDate DATE = GETDATE()
    , @myTimeTxt VARCHAR(16)
    , @myDateTxt VARCHAR(10);

-- Initialize your variables
SELECT @myTimeTxt = @myTime
    , @myDateTxt = @myDate;

-- Display your separated values
SELECT @myDateTxt, @myTimeTxt;

-- Display your concatenated value
SELECT CAST(@myDateTxt AS DATETIME) + CAST(CAST(@myTimeTxt AS TIME) AS DATETIME);
于 2013-03-08T20:13:20.750 に答える
2

このオプションを使用できます

DECLARE @date date = '20010101',
        @time time = '01:01:01'

SELECT CAST(@date AS datetime) + @time

結果:2001-01-01 01:01:01.000

SQLFiddle のデモ

于 2013-03-08T20:23:43.333 に答える
0

SQL 2012 を使用していますか? その場合は、datetimedromparts 関数を使用してこれを実現できる場合があります。この特定の例がなければ、将来のために知ることは常に良いことです:)

http://technet.microsoft.com/en-gb/library/hh213233.aspx

于 2013-03-08T20:29:48.243 に答える