【问题标题】:PHP/MS SQL Server display sql server datetimePHP/MS SQL Server 显示 sql server 日期时间
【发布时间】:2012-08-21 12:06:31
【问题描述】:

我尝试使用 PHP 从 MSSQL Server 日期时间表显示日期和时间,来自 SQL Server 的值是 datetime EX。 2012-08-20 06:23:28:214。现在我想显示它的确切结果,但它 php 像这个 EX 一样显示它。 Aug 20 2012 6:23AM。我曾尝试使用 strtotime 但毫秒不显示或显示:000

非常感谢任何帮助。提前致谢。

【问题讨论】:

  • 从 yyyy-mm-dd 日期格式来看,当您说“SQL Server”时,我假设您的意思是“MySQL 服务器”,这意味着“MS SQL Server”——一个完全不同的产品。
  • 抱歉,应该是 MS SQL SERVER..
  • @ytse_jam 应该是 MS SQL Server 吧?我有点困惑,如果不是mysql,你能把它从标题和标签中删除吗?我会这样做,但不想删除错误的标签。

标签: php sql sql-server


【解决方案1】:

试试这个,

SELECT CONVERT(VARCHAR(50), CAST('2012-08-20 06:23:28:214' as DateTime), 100) 
          AS [OutPut]

-- expected output
--     Aug 20 2012 6:23AM

在上面的示例中,我使用了CAST 来将string date 转换为原始的DateTime 数据类型。但在原始查询中,您可以省略CAST 函数,因为您提到该列已经属于DateTime 数据类型。

SELECT CONVERT(VARCHAR(50), columnDateTime, 100)

SQLFiddle Demo

How to Format Date and DateTime in MSSQL Server

【讨论】:

  • 嗨,约翰,非常感谢。选择转换查询成功了。再次感谢。
【解决方案2】:

使用 PHP 的 strtotime() 将 sql 日期转换为 unix 时间,然后使用 date() 重新格式化它。 =strtotime("2012-08-20 06:23:28.214") 有效,因此只需使用字符串操作将最后的冒号更改为小数点。

或者,this blog post 具有可用于让 MS SQL Server 直接返回 unix 时间的代码。关键功能是SELECT DATEDIFF(second, '1970/01/01 00:00:00', @date)

如果您实际上使用的是 MySQL 而不是 SQL Server,您可以使用函数 UNIX_TIMESTAMP() 来返回当前的 unix 时间。

【讨论】:

    【解决方案3】:

    DateTime 对象的输入字符串类型为u,表示微秒(最多六个)。

    DateTime::format 确实使用与标准 date 相同的字符串,但以下内容取自有关 u 输出数据的文档:

    微秒(在 PHP 5.2.2 中添加)。请注意,date() 将始终生成 000000,因为它需要一个整数参数,而 DateTime::format() 确实支持微秒。

    【讨论】:

    • 感谢您的回答,只是为了使其更清晰,我当然使用 PHP 查询 MSSQL SERVER。来自 MSSQL SERVER 的实际数据是这样的“2012-08-20 06:23:28:214”,现在如果我回显它,输出是这样的“2012 年 8 月 20 日上午 6:23”。现在我想要的是回显实际数据。正如我之前所说,我尝试使用 strtotime 但毫秒回显:000。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多