如何在 SQL Server 2008 中将其转换201402110544
为(2014-02-11)?date
问问题
774 次
3 回答
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
.
于 2015-08-18T08:24:26.447 回答
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;
SQL小提琴:http ://www.sqlfiddle.com/#!3/9eecb7/3689
编辑:我的立场得到纠正。霍里亚是对的;CAST 支持'yyyymmdd',所以你可以直接使用它,只需切割字符串的时间部分。这比我上面的建议更具可读性,这使得 CAST 在您的情况下成为更好的选择。
于 2015-08-18T08:29:16.467 回答
0
如果此格式始终相同,则可以执行此操作
DECLARE @d VARCHAR(20)='201402110544'
SELECT CAST(SUBSTRING(@d,0,9) as DATETIME)
另请查看日期时间数据类型的终极指南,其中详细解释了处理日期时间
于 2015-08-18T08:32:42.383 回答