我尝试从SQL日期查询中获取结果,但我找到0结果
如何格式化日期或是语法问题?
Table1
! START_DATE_TIME ! Result !
!---------------------!--------!
! 2011-03-17 15:09:07 ! name1 !
! 2011-03-18 07:05:15 ! name1 !
! 2011-03-19 14:00:02 ! name2 !
!------------------------------!
date1=as.Date("2011-03-16")
date2=as.Date("2011-03-18")
SELECT * FROM Table1 where START_DATE_TIME
between date1 and date2
感谢您的帮助
答案 0 :(得分:4)
将between
用于日期/时间范围是一种反模式。改为明确的范围条件:
WHERE START_DATE_TIME >= '2011-03-16'
AND START_DATE_TIME < '2011-03-19'
请注意要排除的第一时刻的包含性下限(>=
)和独占上限(<
)。
理由:
您可以在即席查询中包含日期本身(以单引号括起来)。如果从程序执行语句,请使用绑定变量。
在比较中,日期(没有时间组件)会自动扩展到时间戳,包括00:00:00时间。
有关此内容的更多信息:http://modern-sql.com/feature/extract#anit-patter-where-clause
答案 1 :(得分:1)
这不是声明变量的正确方法。这是:
SET @var_name = expr;
您的查询将是:
SET @date1 = '2011-03-16';
SET @date2 = '2011-03-18';
SELECT *
FROM Table1
WHERE START_DATE_TIME BETWEEN @date1 AND @date2
您可以找到更多信息here。