【问题标题】:How to convert MySQL to SQL Server query to display proper date from timestamp?如何将 MySQL 转换为 SQL Server 查询以显示时间戳中的正确日期?
【发布时间】:2013-10-25 22:31:48
【问题描述】:

我需要为 SQL Server 2005 转换以下查询,所以请告诉我应该更改什么,因为 SQL Server 不支持DATE_FORMAT()

它应该如何在 SQL Server 中转换,以便我可以在我的网站上显示正确的日期而不是时间戳(例如:1382016108 是 2013-06-22 10:53:22)?

SELECT DATE_FORMAT(TimeTransfer,'%Y-%m-%d %h:%i:%s')
FROM PREMIUM where strAccountID = ?, $_SESSION['strAccountID']);

编辑:我检查了CONVERT() 函数,但在我的查询中找不到它应该是怎样的。非常感谢您的帮助。

【问题讨论】:

  • 你的时间戳是什么格式的?它看起来不够大,无法以 UTC 毫秒为单位,那么它是什么?
  • 示例:1380319719 直接来自我的表。
  • @KOMban 这并没有告诉我们任何事情。告诉我们您的时间戳采用什么格式、比例或单位。
  • TimeTransfer (int) 在数据库上,并从 php 中使用 time() 保存。我还必须指定什么?请告诉我。

标签: sql-server timestamp


【解决方案1】:

这将起作用:

SELECT CONVERT( VARCHAR(20)           -- Make sure the output string is long enough
    ,   CAST('1970-1-1' As DateTime)  -- The Base Date
      + CAST(TimeTransfer As Float)/(24*60*60)
                                      -- Scale UTC (seconds) to TSQL datetime (days)
                                      --  by dividing by the number of seconds in a day
    , 120)                            -- The format that you want

【讨论】:

  • 它有效,但只有当我直接在 MSSQL Management Studio 中执行此操作时,但如果我在脚本中实现它,它根本不起作用。我的模板显示错误,它破坏了整个脚本。也许可以修剪一下?
  • “根本不起作用”并没有告诉我们任何事情。我建议您在另一个问题中发布脚本和错误/问题。
【解决方案2】:

检查转换功能。它允许您为日期时间值提供格式

SELECT CONVERT(VARCHAR(20),TimeTransfer,120) 
FROM PREMIUM
WHERE strAccountID = ?, $_SESSION['strAccountID']);

【讨论】:

  • 我做了,但不知道在我的情况下应该如何。
【解决方案3】:

使用 CONVERT() 函数

SELECT CONVERT(varchar(20),TimeTransfer,120)
FROM PREMIUM where strAccountID = ?, $_SESSION['strAccountID']);

注意:这给出了 24 小时格式的时间

See this link for Date formats in SQL Server

【讨论】:

  • 这应该显示而不是时间戳是正确的日期?
猜你喜欢
  • 2019-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-27
  • 2018-02-10
  • 1970-01-01
  • 2022-01-10
  • 1970-01-01
相关资源
最近更新 更多