【发布时间】:2019-11-12 21:57:08
【问题描述】:
我有一个 unix 格式的日期(13 位,而不是 10 位):
/Date(1561476867713)/
我想在 VB 中转换该日期,以便可以将其用作 SQL“选择”查询的参数:
SELECT TOP 1 *
FROM QB
WHERE QB.BOQ_ITEM_UID = 9950
AND QB.CONTRACT_UID = 0
AND QB.CONTRACTOR_UID = 3
AND QB.QUANTITY_BREAK = 200
AND QB.RATE_START_DATE = [converted date]
查询应该找到什么(注意时间以毫秒为单位):
我找到了各种解决方案,但没有一个可以针对这种特殊情况进行工作。使用 Visual Basic 和 SQL Server 2016。
编辑:证明我发现的类似问题的解决方案不起作用:
Dim timeStamp = "1561476867713"
Dim unixConvertedDate As DateTime = New
System.DateTime(1970, 1, 1, 0, 0, 0, 0)
unixConvertedDate = unixConvertedDate.AddMilliseconds(timeStamp).AddHours(1)
这将返回“#6/25/2019 04:34:27 PM#”。现在我需要将其更改为: '2019-06-25 16:34:27.713'
问题是'#6/25/2019 04:34:27 PM#' 没有显示毫秒,只有秒,所以我无法将其格式化为如下所示:'2019-06-25 16: 34:27.713'
【问题讨论】:
-
SQL 服务器 2018
-
你检查过[这个相关问题]()吗?stackoverflow.com/q/2904256/5089204
-
@Shnugo 我需要使用 VB 来完成
-
@NickyLarson,只花了几秒钟就找到了上面的答案。只需对 VB 和 UNIX 纪元日期的转换做一些研究。否则应该很容易理解链接答案中的几行,并在 VB 中做同样的事情......
-
Dim dotNetDate as Date =DateTimeOffset.FromUnixTimeMilliseconds(...).DateTime
标签: sql sql-server vb.net date datetime