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 分钟时, 这样做才有意义。

ACCESS 日期查询及操作SQL语句的写法

ACCESS 日期查询及操作SQL语句的写法   2011-06-17 09:30:50|  分类: ACCESS |  标签: |字号大中小 订阅 13.5.1 列出某一...
  • nimanima_1
  • nimanima_1
  • 2012年03月27日 12:58
  • 15056

ACCESS数据库中日期/时间字段比较大小

若Access数据库中的字段类型是 日期/时间, 怎么比较大小呢。         我自己 也困惑了好久。        查询资料。 找到了 2 个 方法:        1,使用函数 DateDif...
  • HK_5788
  • HK_5788
  • 2015年11月02日 12:39
  • 5254

mssql日期和时间函数

GETDATE     取得当前的系统日期 SELECT GERDATE() 返回:今天的日期 DATEADD        将制定的数值添加到指定的日期部分后的日期 SELECT DATEA...
  • linkedin_37130665
  • linkedin_37130665
  • 2017年01月09日 00:54
  • 375

MySQL与MS Access对照

由于MySQL数据库的编码经常是存在问题,更重要的是,有时候我们要做一个应用程序只需要一个DB文件的,比如我设计了一个考试软件,而不需要另外去安装一个MySQL这样的数据库服务器,于是我就想到微软的A...
  • lindeqiang
  • lindeqiang
  • 2007年04月25日 14:52
  • 1731

C# dateTimePiacker 与ACCESS中日期/时间 的列比较的问题 已解决

简单的说来   ACCESS中 数据列类型为  日期/时间   取值为  2017-09-09 但在WINFORM中 dateTimePicker中自然取值为  2017-09-09 00:00:00...
  • txhdjackie
  • txhdjackie
  • 2017年09月19日 15:58
  • 136

mssql 计算 时间 日期 相差 天数 时间

DATEDIFF ( datepart , startdate , enddate )datepart: 日期部分缩写yearyy, yyyyquarterqq, qMonthmm, mdayofye...
  • firetaker
  • firetaker
  • 2010年06月13日 12:36
  • 2637

sqlserver 日期比较

开始直接用下面的日期比较方法 select * from user_tabel where create_time>='2009-02-01‘ and create_time 结果10号的数据未...
  • quxiao2002
  • quxiao2002
  • 2012年03月16日 13:15
  • 2711

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

frmMain.cspublic partial class frmMain : Form { private Thread TransferWorkerThread = nu...
  • WuLex
  • WuLex
  • 2017年07月28日 10:01
  • 525

access转MSSQL经验之谈

  由于SQL2000里面没有"自动编号",所以你的以"自动编号"设置的字段都会变成非空的字段,这就必须手工修改这些字段,并把他的"标示"选择"是",种子为"1",增量为"1", 2,另外,ACCES...
  • dianfeng21sj
  • dianfeng21sj
  • 2007年05月21日 16:24
  • 2069

mssqlserver字符串日期互相转换

1.日期格式转换SQL Server中文版的默认的日期字段datetime格式是yyyy-mm-dd Thh:mm:ss.mmmselect CONVERT(varchar, getdate(), 1...
  • wkwanglei
  • wkwanglei
  • 2010年03月24日 13:34
  • 3100
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MsSql和Access关于日期的比较问题
举报原因:
原因补充:

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