【问题标题】:SQL_VARIANT and DATETIME2SQL_VARIANT 和 DATETIME2
【发布时间】:2019-11-25 19:51:26
【问题描述】:

假设您有下表:

CREATE TABLE [dbo].[Test]
(
    [Value] [sql_variant] NOT NULL
)

让我们插入一些 DATETIME2 值:

INSERT INTO [dbo].[Test]
(
    [Value]
)
VALUES
(
    SYSUTCDATETIME()
)

现在,让我们看看结果:

SELECT
    [Value],
    SQL_VARIANT_PROPERTY([Value], 'BaseType') AS BaseType
FROM
    [dbo].[Test]


Value                     BaseType
-----------------------------------
2019-11-25 19:39:43.274   datetime2
2019-11-25 19:43:49.735   datetime2

为什么值会被截断?

【问题讨论】:

    标签: sql-server tsql sql-variant


    【解决方案1】:

    使用sql_variant 时,您需要具体说明您希望返回的数据类型;否则 SQL Server 将推断显示格式。然而,数据并没有被截断。例如,如果您尝试以下操作,您会看到datetime2(7) 作为Value_DT2 的结果:

    SELECT [Value],
           CONVERT(datetime2,[Value]) AS Value_DT2,
           SQL_VARIANT_PROPERTY([Value], 'BaseType') AS BaseType
    FROM [dbo].[Test];
    

    【讨论】:

      猜你喜欢
      • 2011-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-27
      • 1970-01-01
      • 2019-10-07
      相关资源
      最近更新 更多