これは、列タイプがDATEIME
の場合に使用されましたが、現在はDATE
ではありません。データ型の日付からbigintへの明示的な変換は許可されていません
CONVERT(BIGINT,ev.StartDate) * -1
DATE
列からBIGINT
値を取得するためにとにかくはありますか?
これは、列タイプがDATEIME
の場合に使用されましたが、現在はDATE
ではありません。データ型の日付からbigintへの明示的な変換は許可されていません
CONVERT(BIGINT,ev.StartDate) * -1
DATE
列からBIGINT
値を取得するためにとにかくはありますか?
さらに別のオプションをBIGINTする必要があります。これはでもSQL Serverの日付は1900年に大きなint型から日によってカウントされます
例
Declare @YourTable table (StartDate date)
Insert Into @YourTable values ('2017-05-30')
Select DateDiff(DAY,StartDate,-1)
From @YourTable
戻り
-42884
cast
開始時刻をdatetime
とすることができます。
CONVERT(BIGINT,CAST(ev.StartDate as DATETIME)) * -1
'startDate'のデータ型は何ですか? –
あなたはvarchar型に変換してから
select Convert(bigint,convert(varchar(10),ev.StartDate,112))*(-1)
まず、のための符号を反転します約21億円で有用になり始める。それは580万の範囲にある1年間に相当します。あなたは本当に大きな日付を持っていますか?
もちろん、int
へのキャストは許可されていません。 datetime
の値をキャストできます。 。 。他の方法がありますか?
1つの簡単な方法は、次のとおりです。
select 1 + datediff(day, 0, datecol)
値が実際の変換に一致するように、「+ 1」が必要とされています。 (代わりに "0"の代わりに "-1"を使用することができます)
または、Unixの時間を秒単位またはミリ秒単位で指定したい場合があります。そのために:
select datediff_big(ms, '1970-01-01', datecol)
はなぜちょうど(、ev.StartDate、日の1900年/ 01/01 ') 'DateDiff関数を選択し'使用しないで、あなたは整数に日付を変換する場合....一緒 – scsimon
をすべてを避けるため、 ) –
'CAST(CAST( '2017-05-30 00:00:00.000' as datetime)AS decimal(8,2))'は '42883'を返します。 'CAST(CAST( '2017-05-30 12:00:00.000' AS datetime)as decimal(8,2))'は42883.50を返します。したがって、毎日は1900年から始まる単一の数字として表されます –