-1

日付を変換しようとすると、以下のエラーが発生します

DECLARE @MinLogDate AS varchar(100)
DECLARE @MinDate AS DATETIME

SET @MinLogDate = '10/26/2012 01:23:90 AM'
SET @MinDate = (SELECT CONVERT(CHAR(10), CONVERT(datetime, @MinLogDate,103),101))

エラー:

varcharデータ型を日時データ型に変換すると、値が範囲外になりました。

varchar時刻をdatetimeに変換するにはどうすればよいですか?

編集

私が変更した答えに基づいて..以下は私が取得している実際の日時です..だから今私は気にすることができますが、最大日付は機能していません

    DECLARE @MinDate AS DATETIME
    DECLARE @MaxDate AS DATETIME
    DECLARE @MinLogDate AS varchar(100)
    DECLARE @MaxLogDate AS varchar(100)

    SET @MinLogDate = '8/1/2012 01:00:00 AM'
    SET @MaxLogDate = '8/31/2012 01:00:00 PM'

    SET @MinDate = CONVERT(datetime, LEFT(@MinLogDate, 10), 101)
    SET @MaxDate = CONVERT(datetime, LEFT(@MaxLogDate, 10), 101)

    SELECT @MinDate
    SELECT @MaxDate
4

4 に答える 4

1

対象となる時間と日付。

それらを構成要素に分解します。

DECLARE @MinLogDate AS varchar(100)
DECLARE @MinDate AS DATETIME
SET @MinLogDate = '10/26/2012 01:23:30 AM'


DECLARE @minLD varchar(16) 
DECLARE @minLT varchar(16) 

-- In response to user's comment
SET @minLD = LEFT(@MinLogDate,CHARINDEX(' ',@MinLogDate));
SET @minLT = RIGHT( @MinLogDate, LEN(@MinLogDate) - CHARINDEX(' ', @MinLogDate));

SELECT @MinDate = CONVERT(datetime, @minLD, 101) + CONVERT(time, @minLT)

ノート:

続行する前に、時間文字列を有効なものに変更しました:)

追記

バリーのように、私は に変わり103ました101

編集:絶えず変化する質問に応えて:D

于 2012-10-26T11:50:57.367 に答える
1

これを試してください:変更:上記の回答のように、日付形式タイプ 101 を 103 から変更しました。

DECLARE @MinLogDate AS varchar(100)
DECLARE @MinDate AS DATETIME

SET @MinLogDate = '10/26/2012 01:23:10 AM'
SET @MinDate = (SELECT CONVERT(CHAR(10), Replace(CONVERT(VARCHAR(20), Cast(@MinLogDate AS DATETIME), 101), '-', '/')))
于 2012-10-26T12:19:27.117 に答える
1

最初103はイギリス/フランスdd/mm/yyyyで、あなたはアメリカから変換しているmm/dd/yyyyよう101です。

コードから判断するCHAR(10)と、日付部分を探しているだけですか? もしそうなら、これで十分です:

SET @MinDate = CONVERT(datetime, LEFT(@MinLogDate, 10), 101)

アップデート:

更新された質問に加えて、これでうまくいくはずです:

SET @MinDate = CONVERT(datetime, LEFT(@MinLogDate, CHARINDEX(' ', @MinLogDate)), 101)
SET @MaxDate = CONVERT(datetime, LEFT(@MaxLogDate, CHARINDEX(' ', @MaxLogDate)), 101)
于 2012-10-26T11:41:51.040 に答える