3

基本的に、テーブルには3つの別々の列があります。SMonth私はそれらをSday、、、と呼びますSyear。何らかの理由で数値として格納されます。次の文字列を使用して、日付のように見えるようにフォーマットできますが、並べ替え、並べ替え、datediff、dateadd などの関数を使用することはできません。

CAST(SMonth AS varchar(2)) + '/' + CAST(SDay varchar(2)) + '/' + CAST(SYear AS varchar(4))

テーブルを変更せずに、これを実行可能な日付に変換する方法を知っている人はいますか?

私がそれを使用できる限り、それがどのように見えるかは問題ではありません。つまり、date違いdatetimeはありません。

前もって感謝します。

4

2 に答える 2

2

結果を日付または日時に変換するだけです。

DECLARE @SMonth AS INT = 12
DECLARE @SDay AS INT = 31
DECLARE @SYear as INT = 2013
SELECT CONVERT(DATE,CAST(@SMonth AS varchar(2)) + '/' + CAST(@SDay AS varchar(2)) + '/' + CAST(@SYear AS varchar(4)))
于 2013-08-15T15:35:34.383 に答える
0

フォーマットを使用yyyy/mm/ddしていることを確認するために、文字列のフォーマットを変換する必要がありますSQL ServerODBC canonical

SELECT CONVERT(date, CONVERT(varchar, Syear) + '/' + convert(VARCHAR, SMonth) + '/' + convert(VARCHAR, SDay ) )

そうしないと、結果がデフォルトに依存するdateformatか、誰かが を使用して変更する可能性がありますSET DATEFORMAT。次に例を示します。

05/10/2013意味することができます

  • 2013 年 5月10DATEFORMATU.S
  • 2013 年 10 月 5DATEFORMATBrithish / French

の完全な参照については、これを参照してくださいdateformat

于 2013-08-15T16:11:50.460 に答える