在SQL中解析多个DateTimes
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在SQL中解析多个DateTimes相关的知识,希望对你有一定的参考价值。
所以我提取的文件有两个不同的起始时间格式的多个实例。一个开始时间采用zulu(UTC)格式,另一个采用标准dateTime格式。所以当我创建一个SELECT时,他们都必须通过它。
我的UTC startingTime的一个例子是2011-01-02T00:03:04.123Z
标准startingTime的一个例子是2011-Jan-20 01:15:37.000941 EST
我需要某种类型的dateTime.Parse可以处理它们并以相同的样式将它返回给我2011-Jan-20 01:15:37.000941 EST
所在的第二个样式。
目前我正在使用DateTime.Parse(StartingTime).ToString("yyyy-MMM-dd HH:mm:ss.fff) As StartingTime"
这适用于解析UTC时间格式,但在尝试解析另一个时给出了错误。
有任何想法吗?
即使我没有让它回到我身上,就像这个2011-Jan-20 01:15:37.000941 EST
我会采取一些显示三个毫秒的数字ex:2011-Jan-20 01:15:37.941 EST
,这是我的代码现在做的。
答案
如果你只有这种日期,你可以试试这个。您可以在IF语句中添加更多类型!
DECLARE @func Func<string,string> = (s) =>
DateTime d;
if (DateTime.TryParse(s, out d))
TimeZoneInfo cstZone = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
d = DateTime.SpecifyKind(d, DateTimeKind.Unspecified);
DateTime cstTime = TimeZoneInfo.ConvertTime(d, cstZone, TimeZoneInfo.Utc);
return cstTime.ToString("yyyy-MMM-dd HH:mm:ss.ffffff EST");
return s;
;
@data =
SELECT data FROM
( VALUES
("2011-01-02T00:03:04.123Z")
,("2011-Jan-20 01:15:37.000941 EST")
) AS T(data);
@result =
SELECT @func(data) AS data FROM @data;
OUTPUT @result
TO "/test.txt"
USING Outputters.Tsv();
以上是关于在SQL中解析多个DateTimes的主要内容,如果未能解决你的问题,请参考以下文章