在USQL中解析多个DateTime

时间:2018-08-30 01:09:29

标签: u-sql

因此,我提取的文件具有两种不同开始时间格式的多个实例。一个开始时间为祖鲁(UTC)格式,另一个开始为标准dateTime格式。因此,当我创建一个SELECT时,它们都必须通过它。

我的UTC起始时间的示例是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一样回到我身边,我也会采取一些措施,显示出三毫秒的数字,例如:2011-Jan-20 01:15:37.941 EST,这就是我的代码现在所做的

1 个答案:

答案 0 :(得分:0)

如果只有这种约会,可以尝试一下。 您可以在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();