我是SQL新手,我正在尝试操作一个字符串,我稍后会将其转换为smalldatetime。
startString为2017-9
,日期时间格式应为yyyy-mm-dd hh:mm:ss
。
我知道如何转换它,我知道如何将-dd hh:mm:ss
添加到字符串中。
但如何将9
更改为09
?是否有任何特殊功能或者我应该编写一个脚本来检查该号码是否已有2位数?你会建议我什么?
答案 0 :(得分:0)
您可以尝试以下SQL
脚本:
DECLARE @DATA VARCHAR(MAX);
SET @DATA = '2017-9';
SELECT CASE
WHEN LEN(SUBSTRING(@DATA, 6, LEN(@DATA))) > 1
THEN @DATA
ELSE STUFF(@DATA, 6, 0, '0')
END;
结果:
2017-09
答案 1 :(得分:0)
要在转换为datetime之前获取它,请尝试以下操作:
SELECT CASE WHEN LEN (DateValue) = 6 THEN '0' + RIGHT (DateValue, 1)
WHEN LEN (DateValue) = 7 THEN RIGHT (DateValue, 2)
END AS Period
答案 2 :(得分:0)
以下是使用CONCAT, substring and LPAD
的示例,它可以帮助您:
SELECT
CONCAT(
substring('2017-9',1,5),
LPAD(substring('2017-9',6,2),2,'0')
)
//Output: 2017-09
SELECT
CONCAT(
substring('2017-10',1,5),
LPAD(substring('2017-10',6,2),2,'0')
)
//Output: 2017-10