SQL select适用于Management Studio,但不适用于网站

时间:2016-03-01 10:16:52

标签: sql-server

我有以下查询:

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”

1 个答案:

答案 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与应用程序连接时使用不同的用户或至少使用不同的语言设置。