5

現在の月と年の特定の日を返すことに問題があります。たとえば、15日目が必要です。今まで私はFB / IBの既存の機能で使用していました:

IB_EncodeDate(EXTRACT(YEAR FROM Current_Date),EXTRACT(Month FROM Current_Date),15)

これをMSSQLデータベース用に変換する簡単な方法はありますか?

編集。日付を別の日付と比較するには、OLE 形式 (例では 41,348) で出力する必要があります。データベースの日付を今月の 15 日と比較します。

4

7 に答える 7

8

今月の 15 日の場合:

SELECT DATEADD(DAY, 14, DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0));

この「魔法の」日付である 1899-12-30 に基づいてばかげた OLE 表現を取得するには、次のようにします。

SELECT DATEDIFF(DAY, -2, DATEADD(DAY, 14, 
  DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0)));

回答 (3 月 11 日、変更された要件についてこの回答を更新したとき):

-----
41348
于 2013-02-28T18:26:42.603 に答える
3

では、日付があり、同じ月の 15 日を返したいですか? さて、SQL Server 2008 を想定すると、次のようにすることができます。

SELECT CONVERT(DATE,CONVERT(VARCHAR(6),GETDATE(),112)+'15',112)

以前のバージョンの SQL Server の場合:

SELECT CONVERT(DATETIME,CONVERT(VARCHAR(6),GETDATE(),112)+'15',112)
于 2013-02-28T18:09:10.177 に答える
0

または の後DayかどうかはわかりませんDate。これにより、任意のカルチャに対して dayOfWeek と specificDate の両方が得られます

declare @myDay int = 15

select convert(date,myday) specificDate, datename(dw,myday) dayOfWeek
from (
   select convert(varchar(6),getdate(),112) + convert(varchar, @myDay) myday
) x

フィドルのデモはこちら

| SPECIFICDATE | DAYOFWEEK |
----------------------------
|   2013-02-15 |    Friday |
于 2013-02-28T19:43:58.367 に答える
0

Current_DateSQL Server では になりますgetdate()

OLE オートメーション形式で 15 日目を取得するには、次のことを試してください。

select datediff(day, '18991230', dateadd(day, -day(getdate()) + 15, getdate()))
于 2013-02-28T18:12:16.560 に答える