在MySQL中
select * from record where register_date like '2009-10-10%'
SQL Server中的语法是什么?
发布于 2009-10-27 15:01:55
您可以使用DATEPART()函数
SELECT * FROM record
WHERE (DATEPART(yy, register_date) = 2009
AND DATEPART(mm, register_date) = 10
AND DATEPART(dd, register_date) = 10)
我发现这种方法很容易读懂,因为它忽略了时间部分,而且您不必使用第二天的日期来限制您的选择。您可以通过添加额外的子句,使用适当的DatePart代码来达到更高或更小的粒度,例如
AND DATEPART(hh, register_date) = 12)
以获取在12和1之间创建的记录。
有关有效参数的完整列表,请参阅MSDN DATEPART docs。
发布于 2009-10-27 14:37:08
对DATETIME变量没有LIKE运算符的直接支持,但您始终可以将DATETIME转换为VARCHAR:
SELECT (list of fields) FROM YourTable
WHERE CONVERT(VARCHAR(25), register_date, 126) LIKE '2009-10-10%'
在MSDN docs中查看CONVERT函数中可用“样式”的完整列表。
Marc
发布于 2009-10-27 14:37:35
如果这样做,就会强制它进行字符串转换。最好是构建一个开始/结束日期范围,并使用:
declare @start datetime, @end datetime
select @start = '2009-10-10', @end = '2009-11-10'
select * from record where register_date >= @start
and register_date < @end
这将允许它使用索引(如果register_date
上有索引),而不是表扫描。
https://stackoverflow.com/questions/1629050
复制相似问题