Node.js 更改日期-postgreSQL和WebSocket
我正在使用WebSocket、nodejs v0.10.12和PostgreSQL 9.1以及PostGIS 2.0。 现在,在服务器端的WebSocket上,为了收集文本数据并将其发送到客户端,我使用node的pg插件执行查询。 我有点像Node.js 更改日期-postgreSQL和WebSocket,node.js,postgresql,websocket,Node.js,Postgresql,Websocket,我正在使用WebSocket、nodejs v0.10.12和PostgreSQL 9.1以及PostGIS 2.0。 现在,在服务器端的WebSocket上,为了收集文本数据并将其发送到客户端,我使用node的pg插件执行查询。 我有点像 var query = client.query('SELECT p_name,p_date FROM pins WHERE p_id ='+ja) //send them and render in client as html query.on("ro
var query = client.query('SELECT p_name,p_date FROM pins WHERE p_id ='+ja)
//send them and render in client as html
query.on("row", function (row, result) {result.addRow(row);});
query.on("end", function (result) {
for (var i=0; i<result.rows.length; i++){
connection.send(
'Name</br>'
+result.rows[i].p_name+
'</br>Date</br>'
+result.rows[i].p_date+
'</br>'
}
client.end();
});
这显然是PHP,我使用Javascript是因为我使用WebSocket
我唯一能想到的就是像这样编辑上面的查询
var query = client.query('SET datestyle = "SQL, DMY"; SELECT p_name,p_date FROM pins WHERE p_id ='+ja)
我没有收到任何错误,但是在客户端上,日期呈现为null
我怎样才能解决这个问题
谢谢好的。从哪里开始
这:
不是生成查询的正确方法。使用参数化查询并保护自己不受SQL注入的影响
SET datestyle=“SQL,DMY”代码>
这显然是PHP,我使用Javascript是因为我使用WebSocket
什么?我在想这句话的一些建设性的东西,但我能想到的最好的是“什么?”。上面提到的是PHP,这一点并不明显,因为它不是。将其发送到数据库的事实应该会提示您它是SQL。另外,您没有使用javascript,因为您使用的是WebSocket。您使用javascript是因为您使用的是javascript—WebSocket与此处的任何内容都无关
我唯一能想到的就是
不包括查看手册
转到PostgreSQL网站,单击文档和手册,然后在目录页上单击“函数和运算符”,然后单击“数据类型格式化函数”。以下是您的链接:
您会注意到,PostgreSQL开发人员不仅编写了广泛而详细的手册,而且他们还保持了多个版本的联机状态,从而可以方便地来回切换以查看所做的更改
本页有一个完整的章节,介绍如何以不同的方式格式化日期时间,并对每种效果进行清晰的描述。我没有使用文档搜索或任何类似的聪明方法找到这一点——只是每个页面上的明显链接
如果您进行搜索,您将在datestyle参数上找到大量信息,进一步挖掘将显示您可以为每个会话设置它,或者将其设置为给定用户或数据库的默认值
最后,无论如何,不要这样做。返回ISO标准日期格式,如@mu said(YYYY-MM-DD等)。并在javascript客户端代码中格式化它们
哦-虽然我不是专家,但我不确定
是否是有效的HTML、XHTML或XML。您的意思可能是
?除了应用程序的边缘(即最终显示)之外,您没有在任何地方使用ISO 8601格式有什么原因吗?@muistooshort如果我设置var query=client.query('set datestyle=“ISO,DMY”;从p_id='+ja的管脚中选择p_name,p_date)
2002年2月2日星期六02:00:00 GMT+0200(ΧεμερνήώραGTB)
,而不是像DD/MM/yyyyy那样编辑查询,以包含ja
var,该变量会动态变化,因为它代表一个id整数,参考用户在地图上单击的点。AFAIK和IMHO我不必使用参数化查询,因为我不能通过简单的鼠标点击获得SQL注入。好的,SET datastyle…
它的SQL,反正不是Javascript。此外,由于WebSocket和node,我使用Javascript。我提到我正在使用node。我看到了那个链接。我尝试了类似“for(var I=0;i1)”的方法。当然,您可以通过web界面获得SQL注入。不要依赖提供的数据是好的-使用参数化查询。2.to_char()是一个SQL函数-你可以通过在postgresql.org网站上看到它来判断。3.我的答案不会让你看起来很懒-这是你的问题。底线是,我不能使用将日期更改为_char
或设置日期样式
,因为,嗯,我在nodejs上使用pg模块,而不是纯PHP/SQL。有解决方法吗?你不会有o恐怕要学习一些关于SQL和javascript的知识。我不确定我能不能把我的解释说得更清楚。你可以同时使用这两种语言。
var query = client.query('SET datestyle = "SQL, DMY"; SELECT p_name,p_date FROM pins WHERE p_id ='+ja)
var query = client.query('SELECT p_name,p_date FROM pins WHERE p_id ='+ja)