MsSql和Access关于日期的比较问题

原创 2007年10月05日 08:45:00

 ACCESS的日期时间比较,这是个较难办的东西,从前试过几次,都不是很成功, 就只能将日期字段更改为字符类型,直接进行字符比较, 现在又碰到了,经过反复测试,终于找到原因, 在ACCESS的日期比较上面要用到CDATE的函数会比较方便一些。具体示例如下: ADOQuery1.SQL.Text:=select * from tablename where ((cdate(PTime)>=cdate(:s3)) and (cdate(PTime)<=cdate(:s4)))'; ADOQuery1.Parameters.ParamValues['s3'] :=           FormatDateTime('YYYY-MM-DD 00:00:00', DateTimePicker1.DATE); ADOQuery1.Parameters.ParamValues['s4'] :=           FormatDateTime('YYYY-MM-DD 23:59:59', DateTimePicker2.DATE); ADOQuery1.Open; 数据库中日期字段的格式为常规日期(YYYY-MM-DD hh:nn:ss) 单独进行日期比较就采用上面这个方法,否则在进行>=2005-10-26 and <=2005-10-26的同一天日期比较时, 会找不到这一天的数据。 之前一直采用的是直接生成SQL语句的方式,生成的SQL语句虽然在ACCESS的查询中能正常操作, 但一移到DELPHI来执行就是不行,提示错误信息:不正地定义参数对象。提供了不一致或不完整的信息 。 经朋友小李飞刀提醒,才发现是由于DELPHI把时间里的“:”及后面的值当成了变量参数来处理,所以执行不成功。 遂改成带参数的方式再赋值后,语句就顺利通过了。 在直接赋日期类型的值时,一个是直接在值的前后加”#“号,然后与数据库里的日期型字段比较。 例 select * from tablename where ((cdate(PTime)>=#2005-10-26#); 另一个方法就是将值赋进去后,通过ACCESS自已的CDATE函数来转换,就象上面那样, 这样就可正常比较了。但无论采用哪种方式,都需要赋值的字符串符合日期型所允许的格式, 若是直接20051026121000的字符串,加上“#”号或CDATE函数都是一样无法正确转换成日期型的。

   MsSql--计算两个时间之间间隔 ----------------------------------------------------------------------- Select DateDiff(day,数据库字段,getdate()) From Table  ===>  可以算出数据库里时间和现在时间之间间隔                                                             如果现在时间小于数据库的时间会取负值      day是取他们之间天数,month取月数, DATEDIFF 函数计算指定的两个日期中第二个日期与第一个日期之间各日期部分相差的时间量。 换句话说,它得出两个日期之间的间隔。结果是等于 date2 - date1 的带符号整数值,以各日期部分为单位。 如果一个或两个日期参数是 smalldatetime 值,它们将在内部转换为 datetime 值进行计算。 为了进行计算,smalldatetime 值中的秒和毫秒将自动设置为 0。

 

Select DateAdd(day,3,数据库字段) From Table ===> DateAdd函数向指定日期添加一段时间间隔 例如:如果Table表里的字段存贮的是所有书籍发行的日期,而日期因故要推迟三天 则可以使用此函数更新里面的时间 如果日期参数的数据类型是 smalldatetime,则结果的数据类型也是 smalldatetime。 可以使用 DATEADD 对 smalldatetime 值添加秒或毫秒,但只有当 DATEADD 返回的结果日期至少改变了 1 分钟时, 这样做才有意义。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

SQL/MYSQL/MSSQL/Access区别比较

Access是一种桌面数据库,只适合数据量少的应用,在处理少量数据和单机访问的数据库时是很好的,效率也很高。但是它的同时访问客户端不能多于4个。access数据库有一定的极限,如果数据达到100M左右...
  • gocoo
  • gocoo
  • 2011-06-06 10:51
  • 380

access数据库转为MSSQL要注意的问题

access数据库转换为ms sql server转换方法: 1、开始->Microsoft SQL Server 2008->导入和导出数据(32 位) 2、选择数据源,数据源里选择Mi...
  • skyax
  • skyax
  • 2014-07-19 08:57
  • 144

Delphi 中Access的 时间日期查询问题

法1:通过Format来格式化SQL,Access中yyyy-MM-dd 型日期与其它条件混合查询,写好SQL语句的格式很重要。 //日期与其它信息混合查询 SQLStr := Forma...

列出的部分是Mssql语句,不可以在access中使用。

SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL—数据控制语...

一个将Access数据库转成Mssql数据库的简单工具

frmMain.cspublic partial class frmMain : Form { private Thread TransferWorkerThread = nu...
  • WuLex
  • WuLex
  • 2017-07-28 10:01
  • 238

access与mssql通用写法总结

首先说一下心得: 一、在处理数据库的时候一定要按标准的写法,否则在转库的时候会带来很大的问题 二、尽量不要用默认值,可以在写入时传值,默认值在sql里占用一定的空间,而且在转换时会很麻烦,需要一个...

MSSQL,ORACLE,DB2,MYSQL,Access各类数据库使用GUID作为主键

不同的数据库生成GUID的方式不同,当然可以统一用程序来写,比如最后的c++生成guid的方式,但是有时候用数据库自带的方法,可以更简便。 什么是GUID? GUID: 即Glob...

C#开发EXCEL导入、导出支持MSSQL、ORACLE、ACCESS

主要代码: 1.把excel文件读到DataTable           ///         ///根据exc...

Discuz!NT to Discuz!X2.5论坛转换工具for Access/MSSQL通用版

因为工作需要,要把discuz!net sqlserver 转成mysql 找了很久,终于找到了解决方法,非常有用。 原创作者链接:http://www.bbstobbs.com/thr...

牛人是怎样处理海量数据的_数据库?access?mssql?mysql?oracle等_夜鹰教程网 .

一、数据量过大,数据中什么情况都可能存在。 如果说有10条数据,那么大不了每条去逐一检查,人为处理,如果有上百条数据,也可以考虑,如果数据上到千万级别,甚至过亿,那不是手工能解决的了,必须通过工具...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)