我有一个列将日期信息存储为varchar(8)。所有数据都输入为yyyymmdd。我想在视图中投射此信息以显示为日期。当我尝试:
SELECT CAST(HIRE_DATE AS datetime)
随时间返回值。例如,具有19951107演员阵容的记录为1995-11-07 00:00:00.000。
我怎样才能让它回归" 1995-11-07"没有时间价值?
答案 0 :(得分:1)
这似乎是你正在寻找的东西:
SELECT CONVERT(VARCHAR, CAST(HIRE_DATE AS DATETIME), 102)
请注意,返回值为VARCHAR
,而不是真正的DATE,DATETIME等。
如果您需要它作为DATETIME数据类型,则省略CONVERT
。
SELECT CAST(HIRE_DATE AS DATETIME)
CAST and CONVERT应该会有所帮助。
答案 1 :(得分:0)
如果您有SQL Server 2005或更早版本,@ PHP(cast(HIRE_DATE as datetime)
)的答案是正确的。
SQL Server 2008引入了date
数据类型,这意味着您可以使用cast(HIRE_DATE AS date)
实现所需的目标。
如果varchar(8)列中存在无效日期,则cast()
将导致查询失败。 SQL Server 2012引入了try_
转换函数,如果无法进行转换,则返回空标记。因此,您可以使用try_cast(HIRE_DATE AS date)
实现所需目标。
来自联机丛书:Conversion functions。