希望我们度过美好的一天,并为圣诞节做好准备。
快速提问。我正在将一个MySQL函数转换为SQL Server,我已经转换了大部分函数,除了一个具有以下内容的部分:
@description = CONCAT(@description, date_format(@INLastUpdated, '%H:%i %d %b %Y'))
我要做的是基本上重新创建date_format function以指定相同的方式格式化日期,但我不知道该怎么做。从我在MySQL文档中看到的,所选择的格式将给出小时:分钟日/短月名称/年。
有人有任何想法吗?
答案 0 :(得分:2)
你可以试试这个:
DECLARE @description VARCHAR(1000) = 'test'
DECLARE @INLastUpdated DATETIME = '2012-12-21 14:32:22'
SET @description = @description + ' '
+ LEFT(CONVERT(VARCHAR(8), @INLastUpdated, 8), 5) + ' '
+ CONVERT(VARCHAR(20), @INLastUpdated, 106)
SELECT @description
但请注意,格式106取决于本地语言设置。详细了解 MSDN
答案 1 :(得分:0)
等效函数是CONVERT。但你基本上没有运气。 SQL Server不允许挑选日期标记。您需要浏览可用的完整日期内置格式并选择一种,或尝试通过字符串连接组合输出,如:
CONVERT(VARCHAR, CURRENT_TIMESTAMP, 103) + ' ' + CONVERT(VARCHAR(8), CURRENT_TIMESTAMP, 114)
答案 2 :(得分:0)
哪个版本的SQL Server?在SQL Server 2012中,我们现在具有FORMAT功能。
这在MySQL中
date_format(@INLastUpdated, '%H:%i %d %b %Y')
使用FORMAT函数转换为SQL Server 2012的类似内容:
DECLARE @d DATETIME = GETDATE();
SELECT FORMAT(@d, 'HH:mm d MMM yyyy', 'en-US') AS 'DateTime Result';