我正在使用带有PostGIS 2.0的websockets,nodejs v0.10.12以及PostgreSQL 9.1。 现在,在服务器端的websockets上,为了收集文本数据并将它们发送到客户端,我使用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("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();
});
现在,这是棘手的部分。我想渲染日期为25/02/2012。
通过上面的代码,我得到Sat Feb 02 2002 02:00:00 GMT+0200 (Χειμερινή ώρα GTB)
要获得DD / MM / YYYY,我必须输入一行代码,如
SET datestyle = "SQL, DMY";
这显然是PHP,我使用的是Javascript,因为我使用的是websockets。
我唯一能想到的就是像这样编辑上面的查询
var query = client.query('SET datestyle = "SQL, DMY"; SELECT p_name,p_date FROM pins WHERE p_id ='+ja)
我没有收到任何错误,但在客户端上,日期呈现null
。
我该如何解决这个问题?
由于
答案 0 :(得分:2)
行。从哪里开始?
此:
var query = client.query('SELECT p_name,p_date FROM pins WHERE p_id ='+ja)
不是构建查询的正确方法。使用参数化查询并保护自己免受SQL注入。
SET datestyle = "SQL, DMY";
这显然是PHP,我使用的是Javascript,因为我使用的是websockets。
什么?我试图想一些关于这句话的建设性的东西,但我能想到的最好的是“什么?”。很明显以上是PHP,因为它不是。你将它发送到数据库的事实应该给你一个暗示它是SQL的事实。此外,您没有使用javascript,因为您使用websockets。你正在使用javascript,因为你使用的是javascript - websockets与这里的任何东西都无关。
我唯一能想到的......
不包括查看手册。
转到PostgreSQL网站,单击文档和手册,然后在内容页面上单击“功能和操作员”,然后单击“数据类型格式化功能”。这是给你的链接:
http://www.postgresql.org/docs/current/static/functions-formatting.html
你会注意到PostgreSQL开发人员不仅制作了大量详细的手册,而且还保留了多个在线版本,并且可以很容易地切换回来,看看有什么变化。
本页面上有一节关于如何以不同方式格式化日期时间的部分,并清楚地描述了每种效果。我没有使用文档搜索或类似的任何聪明的东西找到它 - 只是每页上的明显链接。
如果您进行了搜索,您会在datestyle参数上找到很多内容,稍微进一步挖掘就会显示您可以按会话设置它或者作为给定用户或数据库的默认设置。
最后,不要那样做。返回像@mu所说的ISO标准日期格式(YYYY-MM-DD等)。并在您的javascript客户端代码中格式化它们。
哦 - 虽然我不是专家,但我不确定</br>
是否也是有效的HTML,XHTML或XML。你的意思是<br/>
吗?