2016-05-20 17 views
0

SQLデータベースのStartDateUtcフィールドとEndDateUtcフィールドを更新する作業があります。日時をSQL UTCに変換する

カスタマーサービス担当者から、 となる固有のアイテムIDと、それが更新される日付(yay!)が記載されています。問題は、彼が私に次の形式で日付を与えた、次のとおりです。

  • 6月4、2015 21:00 - 午後10時
  • 月3日、2015午前8時 - 午後1時
  • 12月1日、2015年15時 - 午後8時

何とかこれらの日付をSQL形式(2007-05-04 01:34:11.933)に簡単に変換する必要があります。

これを簡単に行うことができるかどうかわからない組み込みのSQLまたは.NETメソッドがありますか?それとも、私がdatepickerに日付を入れて、それがSQL形式を吐き出すことができるウェブサイト(理想的でしょう)

+1

UTCは、日付が表示される形式ではなく、タイムゾーンに関連しています。 –

+0

SELECT GETDATE()AS現在時刻、GETUTCDATE()AS UTCTimeこれを試してください –

+0

これらの値はいくつですか? –

答えて

1

あなたが望むことを行うためのSQLまたは.NET CLRの簡単な機能はありません。ここでは、純粋なSQLで行うための一つの方法です:

CREATE FUNCTION [dbo].[ConvertDate] 
(
    @str nvarchar(30) 
) 
RETURNS @Result TABLE 
(
    StartDate datetime 
, EndDate  datetime 
) 
AS 
BEGIN 
    DECLARE @ThirdWhitespace int   = CHARINDEX(' ', @str, CHARINDEX(' ', @str, CHARINDEX(' ', @str) + 1) + 1) 
    DECLARE @FourthWhitespace int   = CHARINDEX(' ', @str, @ThirdWhitespace + 1) 
    DECLARE @FifthWhitespace int   = CHARINDEX(' ', @str, @FourthWhitespace + 1) 
    DECLARE @FirstComma   int   = CHARINDEX(',', @str) 

    DECLARE @DateString   nvarchar(30) = STUFF(LEFT(@str, @ThirdWhitespace), @FirstComma - 2, 2, '') 
    DECLARE @StartTimeString nvarchar(10) = SUBSTRING(@str, @ThirdWhitespace + 1, @FourthWhitespace - @ThirdWhitespace - 1) 
    DECLARE @EndTimeString  nvarchar(10) = SUBSTRING(@str, @FifthWhitespace + 1, 100) 

    INSERT INTO @Result 
    SELECT CAST(@DateString AS datetime) + CAST(@StartTimeString AS datetime) 
     , CAST(@DateString AS datetime) + CAST(@EndTimeString AS datetime) 
    RETURN 
END 

使用法:これは非常に気難しいあること

SELECT  * 
FROM  dbo.ConvertDate('May 3rd, 2015 8am - 1pm') 

注意。文字列のどこに余分なスペースを追加しても、それは壊れます。自由に.NET CLRを使用できる場合は、regexを使用してコンポーネントをキャプチャできます。

関連する問題