【问题标题】:mssql_query() fields blank for datetime fields日期时间字段的 mssql_query() 字段为空白
【发布时间】:2023-04-06 07:54:01
【问题描述】:

在 Windows Server 2003(64 位)上运行 php 5.2.5 并连接到 SQL Server 2008

使用 mssql_query 从 SQL Server 获取日期时间字段时遇到问题。我查询的任何日期时间字段均不返回任何内容。查询中的所有其他字段都正确,但日期时间字段为空白。

我们最近从 PEAR DB 切换到 mssql_ 函数,这就是问题的原因。切换回 PEAR 不是一种选择。

我在 php.net mssql_query 页面上找到了这个,它确实有效,但我有数百个查询,我希望有一个不需要我们更新每个查询的解决方案。任何人都有更好的解决方案,不会涉及重写每个查询?

“mssql_query() 以不寻常的格式返回 'datetime' 列的值,这让我大吃一惊。为了让您的值以通常的 'YYYY-MM-DD HH:MM:SS' 格式返回,您可以像这样在查询中使用 CONVERT 函数:

SELECT CONVERT(varchar, INVOICE_DATE, 121) AS INVOICE_DATE ...

其中 'INVOICE_DATE' 是 'datetime' 列的名称。"

【问题讨论】:

    标签: php sql-server datetime


    【解决方案1】:

    最后只是做了一些字符串替换来解决这个问题。

    首先,我创建了一个日期字段数组,我可以从我正在使用的 SQL Server DB 中选择这些日期字段。

    我们有一个数据库抽象类,我们可以通过它运行每个查询。

    在 DB 类中,我检查“FROM”是否在查询中。 如果是我在 FROM 上拆分字符串以获取 SELECT 字段部分 然后我对字段数组进行 foreach,如果该字段存在于字符串中,我将字段替换为 CONVERT(varchar, FIELD, 121) AS FIELD

    对我很有用...不适用于 SELECT * 但我们不使用任何 SELECT * 查询,所以对我们来说不是问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-08
      • 2023-03-26
      • 2020-01-26
      • 1970-01-01
      • 2016-04-16
      • 2012-11-26
      相关资源
      最近更新 更多