仅返回日期(不是时间)

时间:2014-03-20 21:28:17

标签: sql sql-server

我有一个列将日期信息存储为varchar(8)。所有数据都输入为yyyymmdd。我想在视图中投射此信息以显示为日期。当我尝试:

SELECT CAST(HIRE_DATE AS datetime)

随时间返回值。例如,具有19951107演员阵容的记录为1995-11-07 00:00:00.000。

我怎样才能让它回归" 1995-11-07"没有时间价值?

2 个答案:

答案 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