开发OA整合考勤系统的总结
ACCESS篇
- 格式化时间:
Format(Now, ["yyyy-mm-dd hh:nn:ss"/"General Date"/"Long Date"/"y"/"ddd/..."])
ddd对应的是周几 - 范围查询:
between #2018-01-01# and #2018-02-01#
, 是以 “#” 为连接符。 - iif():表示条件判断,
IIf ( expr , truepart , falsepart )
- IsNull(): 判断是否为空
- DATEDIFF(): 计算两个日期之间的差:
DateDiff ( 间隔,date1 和 date2 [, firstdayofweek] [, firstweekofyear] )
,其中的间隔可以用yyyy(年),q(季度),m,y(年中的某一天),w(工作日),ww(z周),h,n,s
自己在处理查找access语句的时侯,有点扎死胡同,想用一条sql把所有的想要的结果查出来,后果是耗时多,且效果不理想。
MSSQL篇
- CONVERT():
CONVERT(varchar(100), [f_AttDate], 23)
.常用的几种代码为
CONVERT(varchar(100), GETDATE(), 20): 2006-05-16 10:57:47
CONVERT(varchar(100), GETDATE(), 23): 2006-05-16
CONVERT(varchar(100), GETDATE(), 24): 10:57:47
- ISNULL():ISNULL(CONVERT(varchar(100),d.f_OnDuty1,24), ‘09:00:00’),第一个参数为判断,第二个是true所执行的结果。
- cast():
CAST (expression AS data_type)
,数据类型转换,将数据转为指定的类型。 - 查找两个日期重合部门的数据:
and (('2017-10-01' > cast([f_Value] as datetime) AND '2017-10-01' < cast([f_Value2] as datetime ))
OR ('2017-10-01' < cast([f_Value] as datetime) AND '2018-03-10' > cast([f_Value2] as datetime ))
OR ('2018-03-10' > cast([f_Value] as datetime) AND '2018-03-10'< cast([f_Value2] as datetime) ) - datename(weekday, getDate()): 判断今天是周几,同样的还有
- DATENAME (day ,getdate())–当月几号
- DATENAME (month ,getdate())–月份
- DATENAME (dayofyear ,getdate())–一年中的第几天
- DATENAME(week,GETDATE())–一年中第几周
- DATENAME(hour,GETDATE())–当前几点,24小时制的
- DATENAME(minute,GETDATE())–取当前分钟数
php篇
- php连接mssql:
$conn=mssql_connect("ip,1433",&user,$pwd);
,注意如果没有更改端口号,直接写ip就好了,更改了的可以写ip,port
以“,”为连接符号 - php连接odbc数据源: 1.连接access数据库,可以在搜索-》管理工具中-》数据源管理中创建“系统DSN”,命名选择数据库所在的位置。如果遇到说什么体系不匹配可能是32,64位的问题,打开文件C:\Windows\SysWOW64\odbcad32.exe,在这个里面配置 系统DSN。2.也可以不配置数据源直接连接:
$dsn = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=".iconv("utf-8","gbk","\\\\192.168.100.100\\考勤备份\\attBackup.mdb");
,注意编码问题,DBQ部分可以写本地的路径。
$conn1 = odbc_connect($dsn,"","") or die("error"); - 处理mssql_query()的结果:
for ($i=0; $i < mssql_num_rows($result); $i++)
{
$row = mssql_fetch_array($result);
$name = $row[1];
}
处理odbc_exec( conn1, c o n n 1 , sql);查询的结果
while(odbc_fetch_row($res)) { for ($j = 1; $j <= odbc_num_fields($res); $j++) { $field_name = iconv("GBK","UTF-8", odbc_field_name($res, $j)); $ar[$field_name] = iconv("GBK","UTF-8", odbc_result($res, iconv("UTF-8","GBK",$field_name))); } $toReturn[$i] = $ar; $i++; }