SQLexpress中的日期?

时间:2013-08-29 12:54:08

标签: sql sql-server-express

我再次无法将查询从访问权转换为SQL Express:

SELECT Sum(T0021_Omzet_prog) AS Expr1
FROM T0021_offertes
WHERE (((T0021_offertes.[T0021_dd_uitvoer])>=#6/1/2013# And (T0021_offertes.[T0021_dd_uitvoer])<#7/1/2013#));

任何原因导致错误“#附近的语法不正确”?

我的桌子不是空的:

1-1-1900是一个占位符,我的查询每个月都会循环显示所以是的,有适合的日期。

2 个答案:

答案 0 :(得分:1)

您应该将替换为'

SELECT  SUM(T0021_Omzet_prog) AS Expr1
FROM    T0021_offertes
WHERE   ( T0021_offertes.[T0021_dd_uitvoer] >= '2013/06/01'
          AND T0021_offertes.[T0021_dd_uitvoer] < '2013/07/01'
        ) ;

但是,这取决于datatypeT0021_offertes.[T0021_dd_uitvoer]字段的T0021_offertes.[T0021_dd_uitvoer]是什么?

编辑:使用

之间的查询
SELECT  SUM(T0021_Omzet_prog) AS Expr1
FROM    T0021_offertes
WHERE   T0021_offertes.[T0021_dd_uitvoer] BETWEEN '06/01/2013 00:00:00'
                                          AND     '07/01/2013 00:00:00' 

上面的日期格式:dd / mm / yyyy,所以这是1月6日 - &gt; 1月7日,或者你需要6月1日 - &gt; 7月1日?

答案 1 :(得分:0)

您需要使用以下表示法,因为每个其他日期格式都可能出现错误,具体取决于SQL Server的文化设置(我们甚至经历过在Management Studio中执行查询将'2013/06/01'解释为6月1日,同一台服务器上的存储过程解释了与1月6日相同的字符串):

WHERE (... >= '20130106 00:00:00' AND ... < '20130107 00:00:00')

请注意,当您未明确指定时间时,SQL Server会将时间解释为“午夜”,因此上述查询等同于:

WHERE (... >= '20130106' AND ... < '20130107')

实际上,这可以转换为

WHERE ... BETWEEN '20130106' AND '20130107'