【发布时间】:2013-11-24 07:26:51
【问题描述】:
我有一张表,上面的日期都发生在 11 月。 我写了这个查询
select id,numbers_from,created_date,amount_numbers,SMS_text
from Test_Table
where
created_date <= '2013-04-12'
此查询应返回第 11 个月(11 月)发生的所有事情,因为它发生在日期“2013-04-12”(12 月)之前
但它只返回发生在小于 04 (2013-04-12) 天的可用日期
难道只是比较一天的部分吗?而不是整个日期?
如何解决这个问题?
Created_date 的类型是 date
日期格式默认为yyyy-dd-MM
【问题讨论】:
-
您将日期与字符串进行比较,而不是日期与日期进行比较
-
也许它认为
2013-04-12?是 4 月 12 日吗?或者created_date是一个字符串而不是一个日期? -
查看 T-SQL 手册上的 Cast & Convert 并为您的语言环境使用适当的转换
-
完全不需要强制转换,使用不变的格式'20130412'
-
与其发送带有日期的字符串,不如尝试创建参数化查询并将日期作为日期类型的参数传递。顺便说一句,您使用的是什么版本的 SQL Server? DATE 是在 SQL Server 2008 中添加的。
标签: sql sql-server date compare