どのように私は、SQL SSISの日時文字列のオフ日付を取り除くのですか?
-
20-08-2019 - |
質問
私は、データ・ウェアハウス・プロジェクトに取り組んでいるとSQLのdatetimeレコードのオフ日付ピースを取り除く方法(好ましくは、データフロー内の派生列コンポーネント内)に知っていただきたいと思います。
一度私が日時は、私は時間ディメンションテーブルに関連するタイム・レコードを検索する時に検索をするつもりですちょうど時間に変換しています。
誰かが私に変換派生列内でこれを実現するための簡単な機能を与えることはできますか?
例:単に「11時32分21秒AM」に例えば「2008年12月2日11時32分21秒AM」として日時を変換
解決
私はちょうど(派生列変換、またはタイプ変換の変換を使用して)タイプをDT_DBTIME
するキャストを行うだろう。あなたは、日付部分を取り除くますので<=>、日付/時刻のちょうど(時間、分、秒)の部分が含まれています。
他のヒント
実際には、あなたがこのような最初の2式を逆場合:(DT_DBDATE)(DT_DATE)GETDATE()
代わりに(DT_DATE)(DT_DBDATE)GETDATE()
の、そしてあなたは、日付フィールドオフ時間をTRUNCATE
ます。
DT_DATE
式がDT_DBDATE
式の前にある場合は、、あなたはまだあなたの出力に時刻部分を持っていますが、それはすべてゼロにリセットされます。
あなたはマイケルのソリューションが動作しません変数式でこれを行うにする必要がありますが、あなたは次の式を使用することができた場合:
(DT_DATE)(DT_DBDATE)GETDATE()
(DT_DBDATE)が唯一の日付に現在の日付と時刻を変換します。しかし、新しいデータ型はSSISの日時とcompatipleではありません。したがって、あなたは互換性のある型に変換する(DT_DATE)を使用する必要があります。
このソリューションの礼儀は自身のブログでそれを掲載しているラッセルLoskiに属しています: http://www.bidn.com /ブログ/ RussLoski / SSAS / 1458 /変換-日時-to-dateのインSSIS の
、スケジュールアプリのレポートを書いて、このに走ったdatetimeデータ型の一部として格納されていた時間を必要としていました。私はあなたにこの月のDD YYYYのHHを与える0として日時フォーマットさ:miAM(またはPM)を、そしてちょうどのみAM / PM形式
で時間を返されたことのストリングをしました。以下の実施例。
DECLARE @S DATETIME = GETDATE()
SELECT SUBSTRING(CONVERT(NVARCHAR(30), @S , 0) , 13 , 10) AS ApptTime
, CONVERT(NVARCHAR(30), @S , 0) AS ApptDate
私は個人的には、このための一連の機能を使用しています。例えば:ます。
ALTER FUNCTION [dbo].[TIMEVALUE]
(
@Datetime datetime
)
RETURNS datetime
AS
BEGIN
RETURN (@Datetime - CAST(ROUND(CAST(@Datetime AS float), 0, 1) AS datetime))
END
私はすべてのクレジットを主張するのが大好きですが、それは本当に<のhref = "http://weblogs.asp.net/guerchele/archive/2004/05/04/RE_3A00_-Separating-Date-andに行くべき-Time・イン・T_2D00_SQL.aspx」のrel = "nofollowをnoreferrer">この男でます。