在过去的几周里,我一直潜伏在 Stack Overflow 上寻找与阅读大量 websocket 相关的信息。基本上,我有许多主机都通过 websocket 发出消息,我需要聚合它们。
到目前为止,我已经使用 Golang 完成了单个 websocket 连接。我也使用 Python 完成了我正在寻找的东西,但我真的很想在 Go 中做到这一点!
我使用了 gorilla 的 websocket 示例以及其他一些示例,并且可以在 Go 中成功读取套接字。然而,websocket 服务器似乎并不完全符合典型的开发实践,因为使用 .forEach 或 .Each 等方法在 JS 中;导致握手失败。
原版
package main
import (
"fmt"
"golang.org/x/net/websocket"
"log"
)
var url = "ws://10.0.1.19:5000/data/websocket"
func main() {
ws, err := websocket.Dial(url, "", origin)
if err != nil {
log.Fatal(err)
}
var msg = make([]byte, 512)
_, err = ws.Read(msg)
if err != nil {
log.Fatal(err)
}
fmt.Printf("Receive: %s\n", msg)
} …Run Code Online (Sandbox Code Playgroud) 我目前正在处理一个需要计算两个不同日期之间的天数差异的查询.我以前在DATE列中遇到过问题,因为它们都被存储为numeric列,这是一个彻底的痛苦.
我试着CONVERT像过去那样尝试使用不同的DATETIME字符串构建,但我没有运气.
注释行--convert(datetime,)是我遇到问题的地方.基本上,我需要转换PO_DATE并LINE_DOCK_DATE使用可用的格式,因此我可以计算两者之间的差异.
USE BWDW
GO
SELECT
[ITEM_NO]
,[ITEM_DESC]
,[HEADER_DUE_DATE]
,[BWDW].[dbo].[DS_tblDimWhs].WHS_SHORT_NAME AS 'Warehouse'
,[BWDW].[dbo].[DS_tblFactPODtl].[PO_NO] AS 'PO NUMBER'
,[BWDW].[dbo].[DS_tblFactPODtl].[PO_DATE] AS 'Start'
,[BWDW].[dbo].[DS_tblFactPODtl].[PO_STATUS] AS 'Status'
,[BWDW].[dbo].[DS_tblFactPODtl].[LINE_DOCK_DATE] AS 'End'
--,(SELECT CONVERT(DATETIME, CONVERT(CHAR(8), [BWDW].[dbo].[DS_tblFactPODtl].[PO_DATE])) FROM dbo.DS_tblFactPODtl)
FROM [BWDW].[dbo].[DS_tblFactPODtl]
INNER JOIN [BWDW].[dbo].[DS_tblDimWhs] ON [BWDW].[dbo].[DS_tblFactPODtl].WAREHOUSE = [BWDW].[dbo].[DS_tblDimWhs].WAREHOUSE
INNER JOIN [BWDW].[dbo].[DS_tblFactPO] ON [BWDW].[dbo].[DS_tblFactPODtl].PO_NO = [BWDW]. [dbo].[DS_tblFactPO].PO_NO
WHERE [BWDW].[dbo].[DS_tblFactPODtl].[PO_STATUS] = 'Closed'
AND [BWDW].[dbo].[DS_tblFactPODtl].[LINE_DOCK_DATE] <> 0
Run Code Online (Sandbox Code Playgroud)
我有一个我之前从事过的项目保存的片段,只需要显示从今天到另一年的结果.其中有一堆CAST和CONVERTS,但我尝试了相同的方法,没有成功.
从长远来看,我想为每个数据库表添加一个列,以包含datetime将来可用的正确列...但这是另一个故事.我已经在stackoverflow上阅读了很多关于转换为NUMERIC等的帖子,但是没有任何关于NUMERIC的回复DATETIME.
示例数据:
Start | …Run Code Online (Sandbox Code Playgroud)