3

希望我们今天过得愉快,一切都准备好迎接圣诞节了。

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

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

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

有人有什么想法吗?

4

3 回答 3

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上阅读更多信息

于 2012-12-21T09:59:59.960 回答
0

等效功能是CONVERT。但你基本上不走运。SQL Server 不允许挑选日期标记。您需要浏览可用的完整日期内置格式并选择一种,或者尝试通过字符串连接组合输出,如下所示:

CONVERT(VARCHAR, CURRENT_TIMESTAMP, 103) + ' ' + CONVERT(VARCHAR(8), CURRENT_TIMESTAMP, 114)
于 2012-12-21T09:55:23.893 回答
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 > 格式 (Transact-SQL)

于 2012-12-21T10:21:18.447 回答