【问题标题】:SQL Server 2014 Trouble with Convert FunctionSQL Server 2014 转换函数的问题
【发布时间】:2014-12-02 16:10:23
【问题描述】:

由于某些原因,以下查询返回相同的结果,即使它们不应该

SELECT CONVERT(DATE, GETDATE(),101)
SELECT CONVERT(DATE, GETDATE(),102)
SELECT CONVERT(DATE, GETDATE(),103)
SELECT CONVERT(DATE, GETDATE(),104)
SELECT CONVERT(DATE, GETDATE(),105)-- Ad Infinitum (Tested up to 140)

结果

2014-10-07

以防今天的日期是 2014 年 10 月 7 日

从技术上讲,我用美式英语安装了 SQL Server 2014,并尝试使用它来更改它

set dateformat dmy

但我不知道它是否有所作为。

我是否搞砸了我的安装,我应该修复它,卸载并重新安装,完全格式化我的机器还是不相关。

发布的第一个问题,我相信我遵守了规则,据我所知,如果我犯了错误,请告诉我。

编辑:

SELECT CAST (GETDATE() AS DATE)

结果相同。

【问题讨论】:

  • 好的 - 但你还没有说你要寻找什么 - 你想要什么输出?您看过 SQL Server 2014 的新 FORMAT 函数了吗?
  • 我猜你误解了日期(和日期时间)在 SQL Server(以及几乎任何其他编程语言)中的存储方式——它们没有附加某种格式信息- 它们只是日期信息。您看到的字符串 是当您要求工具(例如管理工作室)显示 日期信息时发生的情况。但不要将 management studio 应用的字符串格式与存储在 date 列或变量中的实际 data 混淆。
  • 对不起,如果我不够清楚,我的目标是得到除我得到的结果之外的任何结果,感谢您指出我的错误。

标签: sql-server function date datetime sql-server-2014


【解决方案1】:

您需要在 CONVERT 函数中使用 VARCHAR 而不是 DATE。如下:

SELECT CONVERT(varchar, GETDATE(),101)
SELECT CONVERT(varchar, GETDATE(),102)
SELECT CONVERT(varchar, GETDATE(),103)
SELECT CONVERT(varchar, GETDATE(),104)
SELECT CONVERT(varchar, GETDATE(),105)

另外,请查看以下链接: Convert Date format into DD/MMM/YYYY format in SQL Server

【讨论】:

    【解决方案2】:

    样式仅在输出类型为文字类型时才重要,即varcharnvarchar。您要做的是将日期时间转换为日期(结果不依赖于样式),然后允许客户端应用程序显示它喜欢的任何内容。

    但是,在下面的示例中,差异是显而易见的:

    select convert(varchar, cast(getdate() as date), 101);
    select convert(varchar, cast(getdate() as date), 102);
    select convert(varchar, cast(getdate() as date), 103);
    select convert(varchar, cast(getdate() as date), 104);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-09
      • 1970-01-01
      • 2018-08-03
      • 2023-03-09
      • 2016-09-30
      相关资源
      最近更新 更多