あなたが望むことを行うための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を使用してコンポーネントをキャプチャできます。
UTCは、日付が表示される形式ではなく、タイムゾーンに関連しています。 –
SELECT GETDATE()AS現在時刻、GETUTCDATE()AS UTCTimeこれを試してください –
これらの値はいくつですか? –