首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设置sybase PHP库以返回与sqlserv相同的默认日期格式

设置sybase PHP库以返回与sqlserv相同的默认日期格式
EN

Stack Overflow用户
提问于 2012-12-10 11:21:54
回答 2查看 667关注 0票数 2

我用PHP编写了一个连接到SQL服务器的应用程序。如果该应用程序在windows上运行,它使用srvsql库,在linux情况下,它使用sybase库。我的问题是server的日期字段输出是不一样的,使用srvsql,我得到了类似于‘2012-10 12:14:26.067’的内容。使用sybase,我得到了‘12月10日2012年12月10日12:14:26:067 '!

如何在不更改每个查询的情况下将sybase连接设置为获得相同的输出格式?

EN

回答 2

Stack Overflow用户

发布于 2014-10-03 17:35:00

几个小时以来,我一直在寻找一个好的解决办法。虽然我希望处理这个php端,但在我目前的情况下,它不是一个选项,因为第三方库正在处理数据。我刚才偶然发现的解决方案是在查询方面。

粗略的想法是在返回结果之前将日期转换为字符串,以便库(在我的例子中是mssql和sqlsrv )没有机会处理结果。

代码语言:javascript
复制
CONVERT(nvarchar(30), myDate, 121) AS date

121是yyyy dd hh:mi:ss.mmm(24小时)

其他选项可以在微软的文档中找到。

编辑

前几天发现了这个。还没有尝试过它,但是mssql库有一个设置来告诉它如何处理日期:mssql.datetimeconvert = On。在php.ini中可能有一种方法可以使两个库以相同的格式呈现日期。我太深入的转换解决方案,现在切换,但这将是值得一些实验,如果有人是第一次阅读。

票数 1
EN

Stack Overflow用户

发布于 2012-12-10 18:20:22

与其担心来自不同数据库的日期格式,不如考虑在PHP端处理它。

这两种格式(2012-12-10 12:14:26.067Dec 10 2012 12:14:26:067PM)都是由PHP识别的。当被传递到一个DateTime对象中时,它们会像预期的那样工作。在PHP交互式提示符中:

代码语言:javascript
复制
php > $dt = new DateTime('Dec 10 2012 12:14:26:067PM');
php > echo $dt->format('r u'), "\n";
Mon, 10 Dec 2012 12:14:26 -0800 067000
php >
php > $dt = new DateTime('2012-12-10 12:14:26.067');
php > echo $dt->format('r u'), "\n";
Mon, 10 Dec 2012 12:14:26 -0800 067000

如果需要刷新器,则r是RFC 2822日期的格式代码,而u是用于微秒的格式代码,仅适用于DateTimes。

通过切换到DateTimes,您可以轻松地在输入格式之间进行权衡,并且基本上不必担心它。DateTime使用解析规则。你会想了解它们的局限性,但通常不会碰到它们。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13799974

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档