【问题标题】:CAST AS DATE Returns in NVARCHAR FormatCAST AS DATE 以 NVARCHAR 格式返回
【发布时间】:2017-01-04 20:49:54
【问题描述】:

CAST(GETDATE() AS DATE) 返回NVARCHAR(10)DATETIME 将列更改为日期,但我不想要其中的时间。我想要一个仅包含日期的 DATE 格式的列。我错过了什么?

【问题讨论】:

  • cast(getdate() as date) 应该做你想做的事。请解释它是如何不工作的。
  • 你还应该解释为什么你认为它是 VNVARCHAR(10)——你使用的是什么前端?
  • 我使用 SQL DBX 作为我的前端。列类型在列名下返回并显示为 NVARCHAR(10)。
  • 不,它没有。 Cast (getdate() as date) 返回一个日期。如果您认为它以 nvarchar(10) 的形式返回,那么还有其他影响该值的因素。或者,您将所看到的(默认日期显示格式)与底层数据类型混淆了。

标签: sql-server date datetime casting nvarchar


【解决方案1】:

显然它是用日期存储值,它只是在返回的结果中显示错误的类型。如果您可以看到该图像,它会在另外两个地方显示为日期,但在底部您可以看到它显示为 NVARCHAR 的位置。我不确定为什么会这样,可能与 SQL DBX 有关。不管怎样,很抱歉浪费了大家的时间。我只是从未见过它在返回的结果中显示错误的类型。

【讨论】:

    【解决方案2】:

    作为证明 cast(getdate() as date) 确实返回 date

    数据类型 的一种方式
    select
       cast(getdate() as date) cast_getdate
    into MyTable_x
    ;
    
    select
      TABLE_NAME, COLUMN_NAME, ORDINAL_POSITION, DATA_TYPE 
    from information_schema.columns
    where table_name = 'MyTable_x'
    ;
    
    
    +------------+--------------+------------------+-----------+
    | TABLE_NAME | COLUMN_NAME  | ORDINAL_POSITION | DATA_TYPE |
    +------------+--------------+------------------+-----------+
    | MyTable_x  | cast_getdate |                1 | date      |
    +------------+--------------+------------------+-----------+
    

    【讨论】:

      【解决方案3】:

      我猜您需要更改列的数据类型。试试这个:

      ALTER TABLE [表名] ALTER COLUMN [列名] DATE

      【讨论】:

      • 他的问题是关于 GETDATE() 函数——这不是一个列。
      • 我明白了,但他的问题并不清楚。由于 CAST(GETDATE() AS DATE) 没有返回时间,我猜他的意思是表中的列仍然有时间,因此我的回应。
      • 什么栏目?什么表?问题中都没有提到这些事情。他显然是在询问如何获取当前日期并将其格式化返回。这与他数据库中的表或列无关。
      • 再一次,他的问题并不清楚。我在做一个有根据的猜测。
      猜你喜欢
      • 2014-10-08
      • 2018-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-19
      • 2019-02-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多