我有以下查询:
SELECT
[tblstudentrakazot].studentid, firstname, lastname, tblRakezetSchedule.*
FROM
tblRakezetSchedule
INNER JOIN
[tblstudentrakazot] ON [tblstudentrakazot].scheduleID = tblRakezetSchedule.scheduleid
INNER JOIN
tblstudents ON [tblstudentrakazot].studentid = tblstudents.studentid
WHERE
scheduleday = datepart(w,convert(datetime,'21/2/2016',103))
AND tblRakezetSchedule.rakezetID = 182
ORDER BY
replace(scheduletimefrom, ':', '')
从SQL Server Management Studio运行时,它可以正常运行并生成3条记录。
从我的VBscript应用程序运行时,我没有记录
问题似乎出现在引用日期scheduleday = datepart(w,convert(datetime,'21/2/2016',103))
的过滤器中 - 当我对其进行评论时,查询有效。
有谁知道问题是什么?
我尝试过播放日期设置,但没有改变任何内容。
我已尝试在CONVERT(int,scheduleday)
中执行WHERE
- 这也没有帮助,因为scheduleday
已经是数字格式字段。
我尝试在datepart中使用dw
而不是w
- 也没有变化。
提前致谢
更新
当我执行WHERE CONVERT(int,scheduleday) = 1
另外 - 我看到CONVERT(int,datepart(w,convert(datetime,'21/02/2016',103)))
正确地给了1。只是奇怪的是1< 1> 1即使它们都被转换为INT
这是我的VBscript:
sql = "SELECT [tblstudentrakazot].studentid, firstname, lastname, tblRakezetSchedule.* FROM tblRakezetSchedule"
sql = sql & " INNER join [tblstudentrakazot] on [tblstudentrakazot].scheduleID = tblRakezetSchedule.scheduleid "
sql = sql & " INNER join tblstudents on [tblstudentrakazot].studentid = tblstudents.studentid"
sql = sql & " WHERE "
sql = sql & " CONVERT(int,scheduleday) = datepart(w,convert(datetime,'" & cleanSQL(planneddate) & "',103)) AND "
sql = sql & " tblRakezetSchedule.rakezetID = " & CleanSQL(x_rakezetID)
sql = sql & " ORDER BY replace(scheduletimefrom, ':', '')"
其中:
x_rakezetID
= 182
planneddate
是日期变量,格式为“21/02/2016”
答案 0 :(得分:1)
SELECT datepart(w,convert(datetime,'21/2/2016',103))
will depend on your session's language settings的结果(取决于用户。)例如:
SET LANGUAGE German;
SELECT datepart(w,convert(datetime,'21/2/2016',103)) ;
...返回7,而英语则返回1.
因此,我怀疑您在通过SSMS与应用程序连接时使用不同的用户或至少使用不同的语言设置。