SQL Server相当于MySQL DATE_FORMAT()

时间:2012-12-21 09:49:12

标签: mysql sql sql-server

希望我们度过美好的一天,并为圣诞节做好准备。

快速提问。我正在将一个MySQL函数转换为SQL Server,我已经转换了大部分函数,​​除了一个具有以下内容的部分:

@description = CONCAT(@description, date_format(@INLastUpdated, '%H:%i %d %b %Y'))

我要做的是基本上重新创建date_format function以指定相同的方式格式化日期,但我不知道该怎么做。从我在MySQL文档中看到的,所选择的格式将给出小时:分钟日/短月名称/年。

有人有任何想法吗?

3 个答案:

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

BOL SQL Server 2012 > FORMAT (Transact-SQL)