如何在SQL server2008中将此201402110544转换为date(2014-02-11)?
发布于 2015-08-18 16:24:26
可以强制转换为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。
发布于 2015-08-18 16:29:16
字符串到日期的转换无疑是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;SQL fiddle:http://www.sqlfiddle.com/#!3/9eecb7/3689
编辑:我站起来了。Horia是对的;CAST支持'yyyymmdd',所以你可以直接使用它,只需剪切字符串的时间部分。这比我上面的建议更具可读性,这使得CAST在您的情况下是更好的选择。
发布于 2015-08-18 16:32:42
如果此格式始终相同,则可以执行以下操作
DECLARE @d VARCHAR(20)='201402110544'
SELECT CAST(SUBSTRING(@d,0,9) as DATETIME)还可以查看The ultimate guide to the datetime datatypes,它详细解释了如何处理日期时间
https://stackoverflow.com/questions/32066432
复制相似问题