SQL为smalldatetime转换准备一个字符串

时间:2017-10-26 08:15:51

标签: sql sql-server tsql datetime type-conversion

我是SQL新手,我正在尝试操作一个字符串,我稍后会将其转换为smalldatetime。

startString为2017-9,日期时间格式应为yyyy-mm-dd hh:mm:ss

我知道如何转换它,我知道如何将-dd hh:mm:ss添加到字符串中。
如何将9更改为09?是否有任何特殊功能或者我应该编写一个脚本来检查该号码是否已有2位数?你会建议我什么?

3 个答案:

答案 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