我的hiredate列现在是yyyy-mm-dd hh:mm:ss
格式,我想要DD-Mon-YYYY HR:MM
格式的输出格式..
例如: -
hiredate(数据类型为varchar
)
2018-04-16 12:19:10
如果在2018年4月16日12:20需要输出。
答案 0 :(得分:1)
您需要CAST
字段 DATETIME ,然后使用FORMAT
函数。
FORMAT
函数
dd-MMM-yyyy hh:mm
[requird] 根据您的问题,您需要检查日期时间是否有几秒钟。
所以添加A CASE
表达式来实现它。
DECLARE @Dt VARCHAR(50) = '2018-04-16 12:19:10'
SELECT
CASE
WHEN FORMAT(CAST(@Dt as datetime),'ss') > 0
THEN FORMAT(DATEADD(MINUTE,1,CAST(@Dt as datetime)),'dd-MMM-yyyy hh:mm', 'en-US')
ELSE FORMAT(CAST(@Dt as datetime),'dd-MMM-yyyy hh:mm', 'en-US')
END
sqlfiddle:http://sqlfiddle.com/#!18/22a72/2
答案 1 :(得分:0)
试试这个
DECLARE @MyDt NVARCHAR(50)='2018-04-16 12:19:10'
SELECT
InputDt = @MyDt,
NewDt = REPLACE(LTRIM(RTRIM(CONVERT(CHAR,CAST(@MyDt AS DATETIME),106))),' ','-')
+' '+CAST(CAST(@MyDt AS TIME) AS NVARCHAR(20))
我的结果:
答案 2 :(得分:0)
正如评论所说,您应将日期和时间导入datetime
或datetime2
列。但是,如果您坚持使用数据,这可能是您最接近的数据:
SELECT CONVERT(varchar(50), DATEADD(minute, DATEDIFF(minute, 0, DATEADD(second, 30, CAST('2018-04-16 12:19:10' as datetime2(0)))), 0), 113)
, CONVERT(varchar(50), DATEADD(minute, DATEDIFF(minute, 0, DATEADD(second, 30, CAST('2018-04-16 12:19:31' as datetime2(0)))), 0), 113);
你可以抛出一些字符串操作来为日期部分添加破折号。
请注意,第二个CONVERT
用于12:19:31
时间,表示结果在需要时被舍入(在本例中为12:20
)。
对于更多CONVERT
格式,请查看this source。
答案 3 :(得分:0)