7

SQLまたはSSISのみを使用して異なるソース間で標準を作成するためにdatetime2をdatetimeに変換しようとしています。例として次のSQLクエリを取り上げます。

SELECT CAST(offer_start_date AS timestamp)
FROM [ODS].[macaclient_offers]

次のエラーが発生します:'データ型datetime2からtimestampへの明示的な変換は許可されていません。'

さらに、単純なキャストを使用して、datetime2をdateに変換することができました。

SQL Server 2008またはSSISを使用してdatetime2をdatetimeに変換する正しい方法は何ですか?

ギリビ

4

5 に答える 5

8

コードにキャストしtimestampています。に変更しdatetimeます。

SELECT CAST(offer_start_date AS datetime) FROM [ODS].[macaclient_offers]
于 2012-06-18T11:25:00.817 に答える
3

サンプルの select ステートメントは、datetime ではなくタイムスタンプに offer_start_date をキャストしようとしています。

datetime2 列からタイムスタンプ値が必要な場合は、DatePart 関数を使用して日付の一部を取得し、自分で作成することができます。

例えば:

declare @date datetime2
set @date = GETUTCDATE()

select @date,
       DATEPART(hour, @date),
       DATEPART(minute, @date),
       DATEPART(second, @date)

DatePart関数への MSDN リファレンス。

なぜそのエラーが発生するのかわかりませんが、同じ問題はありませんでした。以下の例は、私の 2008 Management Studio で問題なく動作します。

create table #temp
(
    OrderId int,
    OrderDate datetime2
)

insert into #temp
(OrderId, OrderDate)
values
(1, GetUTCDate())

select *, CAST(OrderDate as datetime)
from #temp

drop table #temp
于 2012-06-18T11:24:53.870 に答える
1

OK、SSISデータ変換コンポーネントを使用してそれを達成することができました。DT_DBTIME2またはDT_DBTIMEのいずれかを使用できることがわかりました

助けてくれたみんなに感謝します

于 2012-06-18T12:30:15.983 に答える
0

convert(datetime, convert(varchar(4),datepart(year,table_field ))+'-'+ convert(varchar(2),datepart(month,table_field ))+'-'+ convert(varchar(2),datepart (dd,table_field )) ) table_field が datetime2 型の場合

于 2019-02-07T22:36:08.313 に答える