如何在SQL Server 2008中将此201402110544
转换为date
(2014-02-11)?
答案 0 :(得分:1)
您可以转换为DATE
数据类型(https://msdn.microsoft.com/en-us/library/bb630352(v=sql.100).aspx)
SELECT CAST(datetime_value AS DATE)
SELECT CAST(GETDATE() AS DATE) --> 2015-08-18
如果您要将字符串转换为DATE
,则可以使用:
SELECT CAST(LEFT('201402110544', 8) AS DATE)
通过获取前8个字符(YYYYMMDD)来缩小时间部分,并将生成一个有效的字符串以转换为DATE
。
答案 1 :(得分:0)
字符串到日期转换肯定是SQL Server的弱点。 CONVERT可以做到这一点,但只能处理许多给定的格式。因此,您必须先将字符串转换为这种格式,然后再将其转换为日期。
一种这样的格式是120 ='yyyy-mm-dd hh:mi:ss',我认为它最接近你的。另一个102 ='yyyy.mm.dd'足以得到日期。
convert(
date,
concat(substring(datestring, 1,4), '.',
substring(datestring, 5,2), '.',
substring(datestring, 7,2)),
102)
from data;
编辑:我有所纠正。 Horia是对的; CAST支持'yyyymmdd',因此您只需剪切字符串的时间部分即可直接使用它。这比我上面的建议更具可读性,这使得CAST成为您案例中更好的选择。
答案 2 :(得分:0)
如果此格式始终相同,则可以执行此操作
DECLARE @d VARCHAR(20)='201402110544'
SELECT CAST(SUBSTRING(@d,0,9) as DATETIME)
另请查看The ultimate guide to the datetime datatypes,其中详细说明了处理日期时间