1

毎晩自動実行し、クエリを実行し、結果を電子メールで送信するプログラムがあります。私のプログラムでは、クエリの一部として関数を呼び出しています...私がしたいのは、プログラムが実行される日付をパラメーターとして渡すことです。(@startdate および @enddate) @startdate は常に「今日の」日付の 00:00:00 になり、enddate は常に「今日の日付」の 23:59:59 になります。たとえば。プログラムが今夜実行されると、日付として 1/31/13 が渡されます。明日、日付として 2/1/13 が渡され、次の日付は 2/2/13 などになります。クエリ レベルでこれを行うことができれば、それも問題ありません...以下は私のコードです。

SELECT
  SUM(QTY) AS Discounts
FROM
  dbo.fFinancialDataFull('Date Range Report', @startdate , @enddate, '1', '1', 'ALL', 'ALL', 'ALL', 'ALL', '1', '1', '1', '1', '1') AS fFinancialDataFull_1
WHERE
  (ReportCategoryID = 62)) AS unlimitedtbl
4

3 に答える 3

0

これを試して :

Dim StartDate as string = DateTime.Today.ToString("yyyy/MM/dd") & " 00:00:00"
Dim EndDate as string = DateTime.Today.ToString("yyyy/MM/dd") & " 23:59:59"

使用しているデータベース サーバーがわかりません。それが機能しない場合は、別の日付形式を試してください。DateTime.Today.ToString("yyyy-MM-dd")

于 2013-01-31T12:36:37.753 に答える
0

この関数を VB.Net コードで呼び出すには、関数呼び出しをストアド プロシージャに配置し、このプロシージャを VB.NET から呼び出して、次のようにパラメーターを渡す必要があります。

 Dim sqlcmd As New SqlClient.SqlCommand()
 sqlcmd.CommandType = CommandType.StoredProcedure
 sqlcmd.CommandText = "PROCEDURE_NAME"
 sqlcmd.Parameters.Add(New SqlClient.SqlParameter("@startdate", DateTime.Now.Date))
 sqlcmd.Parameters.Add(New SqlClient.SqlParameter("@enddate", DateTime.Now.Date.AddDays(1).AddSeconds(-1)));
 Dim obj As Object = sqlcmd.ExecuteScalar()

ストアド プロシージャを作成できない場合は、クエリ レベルで作成できます。

declare @startdate datetime
declare @enddate datetime

set @startdate = cast(floor(cast(getdate() as float))as datetime) -- truncate the time part
set @enddate = dateadd(S, -1, dateadd(d, 1, @startdate)) -- add 1 day, subtract 1 minute from today
于 2013-01-31T12:34:34.483 に答える