0

如何在 SQL Server 2008 中将其转换201402110544为(2014-02-11)?date

4

3 回答 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 回答