如何将 yyyyMMddhh
(2017092018
)字符串转换为 SQL Server 2012 中的 Date
?
是否可以不使用 T-SQL 将该语句放入 INSERT
子句中来实现?
INSERT INTO [dbo].[Table](SomeColumn)
VALUES (CONVERT(DATETIME, '2017092018', 'yyyyMMddhh'));
如何将 yyyyMMddhh
(2017092018
)字符串转换为 SQL Server 2012 中的 Date
?
是否可以不使用 T-SQL 将该语句放入 INSERT
子句中来实现?
INSERT INTO [dbo].[Table](SomeColumn)
VALUES (CONVERT(DATETIME, '2017092018', 'yyyyMMddhh'));
例子
Declare @S varchar(50)='2017092018'
Select convert(datetime,left(@S,8)) + convert(datetime,right(@S,2)+':00')
返回值
2017-09-20 18:00:00.000
cast('1-1-2021','d-m-yyyy')
。或者它已经存在了吗? - sjd使用STUFF的替代方法:
DECLARE @val VARCHAR(25) = '2017092018';
SELECT CONVERT(DATETIME,STUFF(@val, 9, 0, ' ') + ':00')
这将在小时前添加一个空格,然后为分钟值添加:00
。
DATETIMEFROMPARTS
:DECLARE @d NVARCHAR(10)='2017092018';
SELECT DATETIMEFROMPARTS(LEFT(@d,4),SUBSTRING(@d,5,2),SUBSTRING(@d,7,2),RIGHT(@d,2),0,0,0 ) ;
编辑:
另一个选项:
DECLARE @S varchar(10)='2017092018'
SELECT CAST(LEFT(@s, 8) AS DATETIME) + RIGHT(@s,2)/24.0;
这里有另一种方法来解决这个问题。它类似于John Cappelletti发布的方法。
Declare @S varchar(50)='2017092018'
Select dateadd(hour, convert(int, right(@s, 2)), left(@s, 8))
Select CAST(left(@s, 8) AS DATETIME) + RIGHT(@s,2)/24.0;
- Lukasz Szozda
DATE
两次,但是你的示例中却是DATETIME
。你想要什么? - Siyual