3

良い一日を過ごし、クリスマスに向けて準備万端であることを願っています。

早速質問です。MySQL 関数を SQL Server に変換しています。次の 1 つの部分を除いて、ほとんどの関数が変換されています。

@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 に答える