打開 SQL 數據庫 - 用戶輸入(日期) - 將數據類型 varchar 轉換為 datetime 時出錯。你好,
我正在嘗試使用用戶輸入的日期連接到腳本中的 SQL 數據庫。
當我運行腳本時,出現以下錯誤 -
“[Microsoft][ODBC SQL Server 驅動程序][SQL Server]將數據類型 varchar 轉換為 datetime 時出錯。”
請問,我該如何解決這個問題?
謝謝
nw = New Window( "test",
H LIST BOX(
Text box("Start Date"),
a = numbereditbox(0),
a << set format(format("m/d/y")),
a << set width(12),
a << set(today()),
Spacer Box( size( 10, 20 ) ),
Text box("End Date"),
b = numbereditbox(0),
b << set format(format("m/d/y")),
b << set width(12),
b << set(today())),
Spacer Box( size( 1, 20 ) ),
Button Box( "OK",
farray = Eval List(
{a << get text, b << get text}
);
nw << close window;
)
);
dta= Open database("DRIVER=SQL Server; SERVER=XXX; Trusted_connection = Yes",
"
EXEC dbo.listData @Criteria = '
<SYSTEME>
<DATA name="\!"Alarm\!"">
<COLUMNS>
<COLUMN name="\!"Timestamp\!"/">
</COLUMN>
<WHERE>
<COLUMN name="\!"Resource\!"" operator="\!"Like\!"" value="\!"%a12%\!"/">
</COLUMN>
<PROJECTS>
<PROJECT name="\!"abc\!"/">
</PROJECT>
</PROJECTS>
</WHERE>'
,@StartDateTime = '^farray[1]^'
,@EndDateTime =' ^farray[2]^'");
</COLUMNS></DATA></SYSTEME>回复:打開 SQL 數據庫 - 用戶輸入(日期) - 將數據類型 varchar 轉換為 datetime 時出錯。對於日期時間,我使用以下語句:
t_now = "'" || Substitute(Format(today(),"yyyy-mm-ddThh:mm:ss"),"T"," ") || "'";
回复:打開 SQL 數據庫 - 用戶輸入(日期) - 將數據類型 varchar 轉換為 datetime 時出錯。我將您的窗口更改為模態窗口。否則將顯示該窗口並嘗試一次運行所有 SQL。我不確定 SQL Server 中日期所需的格式,因此您可能需要對此做一些研究。複製輸出到日誌的 SQL 語句並嘗試在 SQL 服務器窗口中手動運行它。
nw = New Window( "test", <<MODAL>
<DATA name="Alarm">
<COLUMNS>
<COLUMN name="Timestamp"></COLUMN>
</COLUMNS>
<WHERE>
<COLUMN name="Resource" operator="Like" value="%a12%"></COLUMN>
</WHERE>
<PROJECTS>
<PROJECT name="abc"></PROJECT>
</PROJECTS>
</DATA>
</MODAL>'
,@StartDateTime = '^start_date^'
,@EndDateTime = '^end_date^']\");
show(sql_statement);
// Uncomment the next line to run the command in SQL Server
//dta= Open database("DRIVER=SQL Server; SERVER=XXX; Trusted_connection = Yes", sql_statement);
其他更改 - 如果您想使用 ^xxx^ 結構,您需要將其包含在 evalinsert() 中。我使用了引號轉義字符 \[ 和 ]\ 因此您的 SQL 語句更清晰一些。