运行Access查询时,出现“无法从字符串转换日期/时间”错误消息,但是我不确定为什么。我以前使用过这种方法,没有遇到任何麻烦。
SET NOCOUNT ON
DECLARE @StartDate date = '[Start date]', @EndDate date = '[End date]'
SELECT
CAST (Date as Date) as LocalDay
,SalesID
,Status
,Wait
,PO_Number
FROM
cpo_test.dbo.table_agent_detail_view
WHERE Date BETWEEN @StartDate And @EndDate
AND SOURCEID=1
为什么Cast在这种情况下不起作用?
答案 0 :(得分:1)
问题不在于CAST,而是
DECLARE @StartDate date = '[Start date]', @EndDate date = '[End date]'
如果我尝试单独执行该语句,则会在SSMS中收到相同的错误。如果我将其更改为
,问题就消失了DECLARE @StartDate date = '2018-01-01', @EndDate date = '2018-12-31'
尚不清楚您要通过将字符串值'[Start date]'
分配给date
变量来完成什么工作,但是您将不得不想出另一种方法。
注意:您将其称为“ Access查询”,但不是Access SQL,它是T-SQL(SQL Server),因此我假设您在Access中将它作为传递查询来运行。如果是这样,请注意直通查询的行为与常规Access查询完全不同,因为它们未由Access表达式评估程序或Access数据库引擎处理,因此它们直接传递给ODBC数据源(因此,名称为“ pass-通过查询”)。
答案 1 :(得分:0)
我认为您在查询条件附近缺少日期转换。 尝试 选择
CAST(日期为日期)为LocalDay ,SalesID ,状态 ,等待 ,PO_Number
从 cpo_test.dbo.table_agent_detail_view
@StartDate和@EndDate之间的CAST(日期作为日期) AND SOURCEID = 1