Access911.net   |   a9BBS   |   OTaA System  
  搜索文章︰  
Access911歡迎您光臨  
   主頁      上傳      简体版       論壇     
設為首頁  |  加入收藏   
  
你現在的位置︰文章索引 -> 文章分類 -> 查詢  
 首頁|  近日更新|  下載  |  文章索引  |  搜索|  朮語|  承接工程|  
 
系統正在加載內容,請耐心等待...
 
 查詢
 窗体
 報表
 
 
 VBA
 函數
 ADO/DAO/ADO.NET
 API
 ADP
 安全
 發布
 OA
 ASP/ASP.NET
 其他語言
 控件
 DELPHI
 C#/.Net
 本站
 其他
 小例程
 常用軟件
 參考文檔
 業主作品
 网友大作
 
 
友情鏈接
 access911.net
 
訪問人次
 1702052
 
站長 E-Mail
 net911@sina.com
 access911@gmail.com
 
RSS 訂閱

顯示附加信息 >>>

字段默認值設定為NOW為什么查不到明明存在的2005-11-30的值?

作者︰cg1  摘自︰access911.net  ︰cg1  更新日期︰2005-12-14  瀏覽人次︰

 

問題︰

select thread_title,threadID from JB_thread where postuserid=428 and (posttime BETWEEN #2005-11-01# and #2005-11-30#) 
posttime 是ACCESS時間類型字段 包含2005-11-30的數據
但查詢結果并沒有2005-11-30的數據?
為什么?如何解決?
posttime 用的日期類型 設默認值為NOW()
數據庫中有2005-11-1 到2005-12-12的所有記錄(每天都有記錄)
但查2005-11-1 到2005-11-30 的記錄,惟獨少2005-11-30 這一天的

 

回答︰

如果你的 posttime 的默認值是 NOW ,那么數據庫中 posttime  字段存儲的值類似

2005-11-30 12:00:25

如果你用 SQL

select thread_title,threadID from JB_thread where postuserid=428 and (posttime BETWEEN #2005-11-01# and #2005-11-30#) 

來搜索值,那么 JET DB 會自動給你加上

select thread_title,threadID from JB_thread where postuserid=428 and (posttime BETWEEN #2005-11-01 00:00:00# and #2005-11-30 00:00:00#) 


00:00:00 你想不要都不行。解決方法是

直接寫 SQL 代碼如下
select thread_title,threadID from JB_thread where postuserid=428 and (posttime BETWEEN #2005-11-01 00:00:00# and #2005-11-30 23:59:59#) 

或者

select thread_title,threadID from JB_thread where postuserid=428 and format(posttime,"yyyy-mm-dd")>='2005-11-01' and  format(posttime,"yyyy-mm-dd")<='2005-11-30'

注意, FORMAT 函數需要 ACCESS DRIVER 支持,如果你是 vb+JETDB 等方法開發,可能不支持。

 

問題︰

把日期字段設置成字符型的了,按日期字段查詢時老是不正确,比如2006-3-7至2006-4-7的數據輸入這兩個值查的數據就不完全,把字段改成短日期型的,又老是類型不批配,怎么回事呀?

 

回答︰

ACCESS 中不存在短日期類型,只有短日期格式

關于此主題請參考以下文章(不要只看標題,請認真仔細地察看上述文章以及相關的評論)︰
    如何清楚認識什么是數據,以及什么是顯示格式?《表》
    http://access911.net/index.asp?uec=bg&u1=a&u2=72FAB11E10DCEFF3
關于此主題請參考以下文章(不要只看標題,請認真仔細地察看上述文章以及相關的評論)︰
    如何清楚認識什么是數據,以及什么是顯示格式?(二)
    http://access911.net/index.asp?uec=bg&u1=a&u2=72FAB11E17DCEBF3

可能是數據庫內部存儲為
2006-4-7 12:55:12
但是你用 
select * from table where datefield between #2006-3-1# and #2006-4-7#
就無法找全信息,因為查詢時系統會自動轉換為
select * from table where datefield between #2006-3-1 00:00:00# and #2006-4-7 00:00:00#

用以下語句就可以了
select * from table where datefield between #2006-3-1 00:00:00# and #2006-4-7 12:59:59#

關于此主題請參考以下文章(不要只看標題,請認真仔細地察看上述文章以及相關的評論)︰
    字段默認值設定為NOW為什么查不到明明存在的2005-11-30的值?《查詢》
    http://access911.net/index.asp?uec=bg&u1=a&u2=72FAB11E16DCECF3

 


本站文章旨在為該問題提供解決思路及關鍵性代碼,并不能完成應該由网友自己完成的所有工作,請网友在仔細看文章并理解思路的基礎上舉一反三、靈活運用。

access911.net 原創文章,作者本人對文章保留一切權利。
如需轉載必須征得作者同意并注明本站鏈接

 

 
相關文章
     沒有手動相關文章
     如何填寫“默認值”屬性?默認值屬性能否使用表達式?
     如何設定表的某字段默認值?
 
評論
     查看或發表更多的評論,請單擊這里。
 
 
 
 
 
   
  Access911.net   |   a9BBS   |   OTaA System   |
建站日期︰2000年4月2日  |  設計施工︰陳格 ( access911 & cg1 )
 Copyright © 2000 - 2003 COMET, 陳格 保留所有權利