【发布时间】:2010-12-19 09:49:04
【问题描述】:
我有一个 DATETIME 列“EntryDate”,并将值存储为 dd/MM/yyyy 格式。 但是当我通过 SQL 获取记录时,我没有得到预期的结果。
例如:
从 2009 年 10 月 23 日到 2009 年 11 月 23 日,我有 90 条记录。我只得到 5-10 条记录。这是为什么呢?
这是我的查询:
SET DATEFORMAT DMY;
SELECT * FROM salesorderlist so
LEFT JOINT sites s ON s.id = so.siteid
WHERE so.entrydate between '23/10/2009' and '23/11/2009'
ORDER BY so.entryDate DESC
但是当我给出从 23/10/2009 到 31/10/2009 的日期范围时,我得到了正确的结果,如果我给出的日期范围从 23/10/2009 到 01/11/2009 我没有得到甚至是一行。
我错过了什么?
在数据库中,我将值存储为“31/10/2009”(dd/MM/yyyy)格式。
提前致谢。
做错了..
Entrydate 是 Varchar 列。现在将其更改为日期时间。谢谢大家的帮助
我现在有一个更大的问题...如何将 varchar 列转换为 datetime 列...如何更新表格
当我尝试更改数据类型时,我收到错误: 将 char 数据类型转换为 datetime 数据类型会导致 datetime 值超出范围。 该语句已终止。
我不想删除记录,因为有成千上万的记录。有什么方法可以转换吗? 谢谢
【问题讨论】:
-
so.entrydate在数据库中是什么类型?
标签: sql sql-server sql-server-2005 types