access与SqlServer 之时间与日期及其它SQL语句比较.docx
-1、Datediff:
算出日期差:
1.access: datediff(d,fixdate,getdate())2.sqlserver: datediff(day,fixdate,getdate())ACCESS实例: select*fromtablewheredata=datediff(d,fixdate,getdate())
sqlserver实例:select*fromtablewhere
data=datediff(day,fixdate,getdate())
算出时间差:
1.access: datediff(h,fixdate,getdate())2.sqlserver: datediff(Hour,2004-12-10,getdate())ACCESS实例: selectDATEDIFF(h,HMD,getdate())
sqlserver实例:selectdatediff(Hour,2004-12-10,getdate())
算出月份差:
1.access: datediff(m,fixdate,getdate())2.sqlserver: datediff(Month,2004-12-10,getdate())ACCESS实例: selectDATEDIFF(m,HMD,getdate())
sqlserver实例:selectdatediff(Month,2004-12-10,getdate())
2、日期变量
1.access: #data#2.sqlserver: data
ACCESS实例: select*fromtablewheredata=#data#
sqlserver实例:select*fromtablewheredata=data
3、是否
1.access: notfinished2.sqlserver: finished=0
ACCESS实例: select*fromtablewherenotfinishedsqlserver实例:select*fromtablewherefinished=0
4、求余数
access: amodb=1002.sqlserver: a%b=100
ACCESS实例: select amodb=100fromtablewherenotfinished
sqlserver实例:selecta%b=100fromtablewherefinished=0
5、获取当天日期1.access: now()
sqlserver: getdate()
ACCESS实例: select now()sqlserver实例:selectgetdate()
数据库导入以后,自动增加字段需要重写,所有的数字类型需要增加长度,最好用decimal。
所有的默认值都丢失了。主要是数字类型和日期类型。所有now(),time(),date()要改成getdate()。
所有datediff(d,time1,time2)要改成datediff(day,time1,time2)
有可能一些true/false类型不能使用,要变为1/0。备注类型要通过cast(columnasvarchar)来使用。
CursorType要改成1,也就是打开数据库时要给出第一个数字参数为1,否则记录可能显示不完整。
isnull(rowname)要改成rowname=null
ACCESS的数据库中的自动编号类型在转化时,sqlserver并没有将它设为自动编号型,我们需在SQL创建语句中加上identity,表示自动编号!
转化时,跟日期有关的字段,SQLSERVER默认为smalldatetime型,我们最好将它变为datetime型,因为datetime型的范围比smalldatetime型大。有时用smalldatetime型时,转化失败,而用datetime型时,转化成功。
对此两种数据库进行操作的sql语句不全相同,例如:在对ACCESS数据库进行删除纪录时用:delete*fromuserwhereid=10,而对SQLSERVER数据库进行删除是用:deleteuserwhereid=10.
日期函数不相同,在对ACCESS数据库处理中,可用date()、time()等函数,但对SQLSERVER数据库处理中,只能用datediff,dateadd等函数,而不能用date()、time(