【问题标题】:FREETDS Dateformat issuesFREETDS 日期格式问题
【发布时间】:2016-07-27 14:12:17
【问题描述】:

下面的SQL语句

SELECT getdate()
go

当我从 SQL Server 管理工作室运行时,它给出了

"Jul 27 2016 22:00:00.860"

当我从 sqsh 运行它时,它会给出

"Jul 27 2016 10:00PM"

sqsh 使用 freetds 从我的 linux 机器连接到 SQL 服务器。我有一个使用 freetds 的 C 程序,当以 24 小时格式检索日期时它可以正常工作。

我猜 freetds 有一些设置可以获取所需格式的日期,有人可以建议如何通过 freetds 设置来实现这一点。

【问题讨论】:

  • 我不知道答案,但是对于您的问题,不确定您需要修复这两个中的哪一个。

标签: c sql-server freetds sqsh


【解决方案1】:

这是我刚刚在我的 ubuntu linux 机器上所做的:

  1. 在 bash shell 中键入此命令:locale 我的结果(缩短):LANG=en_US

  2. 将locales.conf文件复制到config目录:sudo cp /usr/share/doc/freetds-common/examples/locales.conf /etc/freetds/

  3. 在编辑器中打开/etc/freetds/locales.conf 文件

  4. 注释掉 locales.conf 文件中定义的旧日期格式(我使用“;”作为注释字符),复制该行

  5. 在 locales.conf 文件的相应部分定义您需要的日期格式

    [en_US]

    ;date format = %b %e %Y %I:%M:%S:%z%p

    date format = %Y-%m-%d %H:%M:%S

  6. 重启你的网络服务器进程

现在我从sqsh收到:

SELECT getdate();
: 2016-08-01 11:37:45

【讨论】:

  • 谢谢你,但不幸的是我无法访问 /etc/freetds/,它限制了我的开发人员登录。将文件放在 >/freetds/locales.conf 并使用此目录的任何替代方法。
  • 添加点 6.... 需要重启 apache!
【解决方案2】:

目前,FreeTDS 返回的默认日期格式在locales.conf 文件中配置。详情请见http://www.freetds.org/userguide/locales.htm

【讨论】:

  • 嘿,我设置了环境变量 LOCALE = >/locales.conf 并根据我的需要修改了日期格式,但仍然没有运气。
  • 更正链接:freetds.org/userguide/locales.html(编辑队列已满,请尽可能编辑问题并删除此评论)
猜你喜欢
  • 1970-01-01
  • 2011-09-20
  • 2014-04-01
  • 1970-01-01
  • 2016-01-25
相关资源
最近更新 更多