0

我正在使用 websockets、nodejs v0.10.12 和 PostgreSQL 9.1,以及 PostGIS 2.0。现在,在服务器端的 websockets 上,为了收集文本数据并将它们发送到客户端,我使用节点的 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

我怎样才能解决这个问题?

谢谢

4

1 回答 1

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 参数的信息,进一步挖掘会显示您可以在每个会话中设置它,也可以将其设置为给定用户或数据库的默认值。

最后,不要那样做。返回 ISO 标准日期格式,如 @mu 所说(YYYY-MM-DD 等)。并在您的 javascript 客户端代码中格式化它们。

哦 - 虽然我不是专家,但我也不确定那</br>是有效的 HTML、XHTML 还是 XML。你也许是说<br/>

于 2013-07-24T22:02:26.503 回答