本篇文章给大家谈谈Access和SQLServer计算日期的方式不同,同时本文还将给你拓展.net(C#数据库访问)Mysql,Sqlserver,Sqlite,Access四种数据库的连接方式、Ac
本篇文章给大家谈谈Access和SQL Server计算日期的方式不同,同时本文还将给你拓展.net(C#数据库访问) Mysql,Sql server,Sqlite,Access四种数据库的连接方式、Access 导入到SQL Server 2005的方法小结、access与SqlServer 时间日期比较、Access和SQL server开启表间关系,并实现更新或删除母表数据自动等相关知识,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:- Access和SQL Server计算日期的方式不同
- .net(C#数据库访问) Mysql,Sql server,Sqlite,Access四种数据库的连接方式
- Access 导入到SQL Server 2005的方法小结
- access与SqlServer 时间日期比较
- Access和SQL server开启表间关系,并实现更新或删除母表数据自动
Access和SQL Server计算日期的方式不同
我们有一些通用工具,除其他外,可以保存和显示日期。它将另存为数字,例如41247。
如果我将其转换回Access中的日期,则会得到2012/12/04-是正确的。
[使用Format(41247;“常规日期”)或Format(Format(“ 41247”,“ Short Date”),“ Short Date”)]
如果我将该数字转换回SQL
Server中的日期,则会得到2012/12/06-不正确。我正在使用CONVERT(datetime,CONVERT(real,41247))
为什么会有区别,我可以在SQL中使用什么来解决它?
答案1
小编典典因此,当我从excel文件导入数据时遇到了这个问题。
您有2天的差异有两个原因
原因1在您的SQL Server中,1900年1月1日是Day 0,而在访问中是Day 1。
(我没有使用Access,但是如果您在Excel中输入日期1900-01-01并将单元格格式设置为数字,则会得到1)。
原因2 1900年不是a年。SQL Server知道它,但Access不知道。它认为存在1900年2月29日。
在您的SQL Server中运行
SELECT DATEDIFF(dd, 0, ''1900-01-01'')SELECT DATEDIFF(dd, 0, ''1900-02-28'')SELECT DATEDIFF(dd, 0, ''1900-03-01'')
输出将是
058 59
但是当你尝试跑步时
SELECT DATEDIFF(dd, 0, ''1900-02-29'')
你会得到一个错误
The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.
由于上述两个原因,您的访问时间将增加2天。
因此,对于2012/12/04,Access返回41247,而SQL Server将给您41245。
希望能有所帮助。
编辑
看看Eric Lippert的评论,他提到了他和Joel Spolsky撰写的2篇非常有趣的博客文章。
.net(C#数据库访问) Mysql,Sql server,Sqlite,Access四种数据库的连接方式
原文: .net(C#数据库访问) Mysql,Sql server,Sqlite,Access四种数据库的连接方式便签记录Mysql,Sql server,Sqlite,Access四种数据库的简单连接方式


//using MySql.Data.MySqlClient;
#region 执行简单SQL语句,使用MySQL查询
static string strConn = "server=.;database=Data20180608;uid=sa;pwd=123456;integrated Security=SSPI;persist Security info=false;";
/// <summary>
/// 执行SQL语句,返回影响的记录数
/// </summary>
/// <param name="SQLString">SQL语句</param>
/// <returns>影响的记录数</returns>
public static int MyExecuteSql(string SQLString)
{
using (MySqlConnection connection = new MySqlConnection(strConn))
{
using (MySqlCommand cmd = new MySqlCommand(SQLString, connection))
{
try
{
connection.Open();
int rows = cmd.ExecuteNonQuery();
return rows;
}
catch (System.Data.SqlClient.SqlException e)
{
connection.Close();
throw e;
}
}
}
}
/// <summary>
/// 执行查询语句,返回DataTable
/// </summary>
/// <param name="SQLString">查询语句</param>
/// <returns>DataSet</returns>
public static DataTable MyQuery(string SQLString)
{
using (MySqlConnection connection = new MySqlConnection(strConn))
{
DataSet ds = new DataSet();
try
{
connection.Open();
MySqlDataAdapter command = new MySqlDataAdapter(SQLString, connection);
command.Fill(ds, "ds");
}
catch (System.Data.SqlClient.SqlException ex)
{
throw new Exception(ex.Message);
}
return ds.Tables[0];
}
}
#endregion


#region 执行简单SQL语句,使用SQL SERVER查询
static string strConn = "Data Source=.;database=Data20180608;User id=root;Password=123456;pooling=false;CharSet=utf8;port=3306;";
/// <summary>
/// 执行SQL语句,返回影响的记录数
/// </summary>
/// <param name="SQLString">SQL语句</param>
/// <returns>影响的记录数</returns>
public static int ExecuteSql(string SQLString)
{
using (SqlConnection connection = new SqlConnection(strConn))
{
using (SqlCommand cmd = new SqlCommand(SQLString, connection))
{
try
{
connection.Open();
int rows = cmd.ExecuteNonQuery();
return rows;
}
catch (System.Data.SqlClient.SqlException e)
{
connection.Close();
throw e;
}
}
}
}
/// <summary>
/// 执行查询语句,返回DataTable
/// </summary>
/// <param name="SQLString">查询语句</param>
/// <returns>DataSet</returns>
public static DataTable Query(string SQLString)
{
using (SqlConnection connection = new SqlConnection(strConn))
{
DataSet ds = new DataSet();
try
{
connection.Open();
SqlDataAdapter command = new SqlDataAdapter(SQLString, connection);
command.Fill(ds, "ds");
}
catch (System.Data.SqlClient.SqlException ex)
{
throw new Exception(ex.Message);
}
return ds.Tables[0];
}
}
#endregion


//using System.Data.OleDb;
public static string OtherPAth = "";
public static string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=";
public static string Sql = String.Empty;
#region 执行简单SQL语句,使用OleDb查询
/// <summary>
/// 执行SQL语句,返回影响的记录数
/// </summary>
/// <param name="SQLString">SQL语句</param>
/// <returns>影响的记录数</returns>
public static int ExecuteSql(string SQLString)
{
using (OleDbConnection connection = new OleDbConnection(strConn + OtherPAth ))
{
using (OleDbCommand cmd = new OleDbCommand(SQLString, connection))
{
try
{
connection.Open();
int rows = cmd.ExecuteNonQuery();
return rows;
}
catch (System.Data.SqlClient.SqlException e)
{
connection.Close();
throw e;
}
}
}
}
/// <summary>
/// 执行查询语句,返回DataTable
/// </summary>
/// <param name="SQLString">查询语句</param>
/// <returns>DataSet</returns>
public static DataTable Query(string SQLString)
{
using (OleDbConnection connection = new OleDbConnection(strConn + OtherPAth))
{
DataSet ds = new DataSet();
try
{
connection.Open();
OleDbDataAdapter command = new OleDbDataAdapter(SQLString, connection);
command.Fill(ds, "ds");
}
catch (Exception ex)
{
System.Windows.Forms.MessageBox.Show(ex.Message);
}
return ds.Tables[0];
}
}
/// <summary>
/// 执行查询语句,返回DataTable
/// </summary>
/// <param name="SQLString">查询语句</param>
/// <returns>DataSet</returns>
public static DataTable QueryDataName()
{
using (OleDbConnection connection = new OleDbConnection(strConn + OtherPAth))
{
DataTable ds = new DataTable();
try
{
connection.Open();
ds = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
}
catch (Exception ex)
{
System.Windows.Forms.MessageBox.Show(ex.Message);
}
return ds;
}
}
#endregion


public static string strConn = @"Data Source=" + @"F:\资料文档\20190227\CAD\0625AnPin\CadDLLcl\Data\Cad_try0626.db";
public static string Sql = String.Empty;
/// <summary>
/// 执行SQL语句,返回影响的记录数
/// </summary>
/// <param name="SQLString">SQL语句</param>
/// <returns>影响的记录数</returns>
public static int ExecuteSql(string SQLString)
{
using (SQLiteConnection connection = new SQLiteConnection(strConn))
{
//事务
using (SQLiteTransaction singleTrans = connection.BeginTransaction(IsolationLevel.ReadCommitted))
{
using (SQLiteCommand cmd = new SQLiteCommand(SQLString, connection))
{
try
{
connection.Open();
cmd.Transaction = singleTrans;
int rows = cmd.ExecuteNonQuery();
singleTrans.Commit();
return rows;
}
catch (System.Data.SqlClient.SqlException e)
{
connection.Close();
singleTrans.Rollback();
throw e;
}
}
}
}
}
/// <summary>
/// 执行查询语句,返回DataTable
/// </summary>
/// <param name = "SQLString" > 查询语句 </ param >
/// < returns > DataSet </ returns >
public static DataTable Query(string SQLString)
{
using (SQLiteConnection connection = new SQLiteConnection(strConn))
{
DataSet ds = new DataSet();
try
{
connection.Open();
SQLiteDataAdapter command = new SQLiteDataAdapter(SQLString, connection);
command.Fill(ds, "ds");
return ds.Tables[0];
}
catch (Exception ex)
{
connection.Close();
throw ex;
}
}
}
/// <summary>
/// 执行存储过程,返回影响的记录数
/// </summary>
/// <param name="SQLString">SQL语句</param>
/// <returns>影响的记录数</returns>
public static int ExecuteProc(string procName, SQLiteParameter[] coll)
{
using (SQLiteConnection connection = new SQLiteConnection(strConn))
{
//事务
using (SQLiteTransaction singleTrans = connection.BeginTransaction(IsolationLevel.ReadCommitted))
{
using (SQLiteCommand cmd = new SQLiteCommand(connection))
{
try
{
connection.Open();
for (int i = 0; i < coll.Length; i++)
{
cmd.Parameters.Add(coll[i]);
}
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = procName;
cmd.Transaction = singleTrans;
int rows = cmd.ExecuteNonQuery();
singleTrans.Commit();
return rows;
}
catch (System.Data.SqlClient.SqlException e)
{
connection.Close();
singleTrans.Rollback();
throw e;
}
}
}
}
}
/// <summary>
/// 执行带参数的SQL语句,返回影响的记录数
/// </summary>
/// <param name="SQLString">SQL语句</param>
/// <returns>影响的记录数</returns>
public static int ExecuteSqlPar(string sqlPar, SQLiteParameter[] coll)
{
using (SQLiteConnection connection = new SQLiteConnection(strConn))
{
//事务
using (SQLiteTransaction singleTrans = connection.BeginTransaction(IsolationLevel.ReadCommitted))
{
using (SQLiteCommand cmd = new SQLiteCommand(connection))
{
try
{
connection.Open();
for (int i = 0; i < coll.Length; i++)
{
cmd.Parameters.Add(coll[i]);
}
cmd.CommandType = CommandType.Text;
cmd.CommandText = sqlPar;
cmd.Transaction = singleTrans;
int rows = cmd.ExecuteNonQuery();
singleTrans.Commit();
return rows;
}
catch (System.Data.SqlClient.SqlException e)
{
connection.Close();
singleTrans.Rollback();
throw e;
}
}
}
}
}
Access 导入到SQL Server 2005的方法小结
方法一:
名称:DTS(这个在MSsql2000里边也有)
操作:在命令提示符窗口中运行 DTSWizard.exe
sql Server 导入和导出向导提供了生成 Microsoft sql Server 2005 Integration Services (SSIS) 包最简单的方法。sql Server 导入和导出向导可以访问各种数据源。可以向下列源复制数据或从其中复制数据:
·Microsoft sql Server
·文本文件
·Microsoft Office Access
·Microsoft Office Excel
·其他 OLE DB 访问接口
此外,可以只使用 ADO.NET 访问接口和 ODBC 数据源作为源。
启动 sql Server 导入和导出向导
在 Business Intelligence Development Studio 中,右键单击“SSIS 包”文件夹,再单击“SSIS 导入和导出向导”。
- 或 -
在 Business Intelligence Development Studio 中的“项目”菜单上,单击“SSIS 导入和导出向导”。
- 或 -
在 sql Server Management Studio 中,连接到数据库引擎服务器类型,展开数据库,右键单击一个数据库,指向“任务”,再单击“导入数据”或“导出数据”。
- 或 -
在命令提示符窗口中运行 DTSWizard.exe(位于 C:\Program Files\Microsoft sql Server\90\DTS\Binn)。
方法二:
sql 查询
操作:执行下列sql语句:
EXEC sp_configure 'show advanced options',1;
GO
RECONfigURE;
GO
EXEC sp_configure 'Ad Hoc distributed Queries',1;
GO
RECONfigURE;
GO
INSERT INTO 表名(字段1,字段2,字段3)
SELECT 字段1,字段3
FROM opendatasource( 'Microsoft.Jet.OLEDB.4.0','Data Source="d:\source.mdb";Jet
OLEDB:Database Password=密码')...表名
文字版:
安装好sql Server 2005 Express后,再安装sql Server Management Studio ExpressCTP就可以很方便的使用控制台进行数据库的管理。但sql Server Management Studio ExpressCTP并没有导入Access数据库的功能,我们应该使用Access的“数据库实用工具”进行导入。
本文以Access2003为例介绍如何将Access的数据库导入到sql Server 2005 Express中,其中没有说明的地方均使用默认设置。
1、安装Access 2003,选中Access下的“数据库复制”组件。
2、打开Access 2003数据库,依次单击“工具”-“数据库实用工具”-“升迁向导”。
3、在“升迁向导”中选择“新建数据库”,单击“下一步”。选择安装了sql Server 2005Express的服务器为导入服务器,使用默认的数据库名称,
单击“下一步”。将其中可以的表添加到“导出到 sqlServer”中,
单击“下一步”。升迁默认的表属性,
单击“下一步”。创建一个新的ADP文件,
单击“下一步”。单击“打开新ADP文件”,单击“完成”。
4、打开刚刚创建的Adp文件,依次单击“工具”-“数据库实用工具”-“传送数据库”。在sql Server中输入“Myserver/sqlexpress”,单击“下一步”。单击“完成”。导入完成。
5、打开“sql Server Management Studio Express”就可以看到刚刚添加的数据库。
这样的导入方式可以导入表或者是link表以及他们的relationship。
access与SqlServer 时间日期比较
1、Datediff: 1.1算出日期差: 1.
1、Datediff:
1.1算出日期差:
1.access: datediff(''d'',fixdate,getdate())
2.sqlserver: datediff(day,fixdate,getdate())
ACCESS实例: select * from table where data=datediff(''d'',fixdate,getdate())
sqlserver实例: select * from table where data=datediff(day,fixdate,getdate())
1.2算出时间差:
1.access: datediff(''h'',fixdate,getdate())
2.sqlserver: datediff(Hour,''2004-12-10'',getdate())
ACCESS实例: select DATEDIFF(''h'',HMD,getdate())
sqlserver实例: select datediff(Hour,''2004-12-10'',getdate())
1.3算出月份差:
1.access: datediff(''m'',fixdate,getdate())
2.sqlserver: datediff(Month,''2004-12-10'',getdate())
ACCESS实例: select DATEDIFF(''m'',HMD,getdate())
sqlserver实例: select datediff(Month,''2004-12-10'',getdate())
----------------------------------------------------------------------------
2、日期变量
1.access: #"&data&"#
2.sqlserver: ''"&data&"''
ACCESS实例: select * from table where data=#"&data&"#
sqlserver实例: select * from table where data=''"&data&"''
----------------------------------------------------------------------------
3、是否
1.access: not finished
2.sqlserver: finished=0
ACCESS实例: select * from table where not finished
sqlserver实例: select * from table where finished=0
----------------------------------------------------------------------------
4、求余数
1.access: a mod b=100
2.sqlserver: a % b =100
ACCESS实例: select a mod b=100 from table where not finished
sqlserver实例: select a % b =100 from table where finished=0
----------------------------------------------------------------------------
5、获取当天日期
1.access: now()
2.sqlserver: getdate()
ACCESS实例: select now()
sqlserver实例: select getdate()
Access和SQL server开启表间关系,并实现更新或删除母表数据自动
1.Access 开启 表间 关系 ,并 实现 删除 母表 数据 自动 删除 子表 数据 : 在Tables等界面 - 右键 - Relationships... - 弹出Relationships窗口 - 选择需要关联的表 - 双击Relationships窗口空白位置 - 弹出 Edit Relationships 窗口 - 就可以看到Enforce Re
1.
在Tables等界面 - > 右键 - > Relationships... -> 弹出Relationships窗口 -> 选择需要关联的表 -> 双击Relationships窗口空白位置 -> 弹出 Edit Relationships 窗口 -> 就可以看到Enforce Referential Integrity选项 -> 选中就可以继续选择 Cascade...了.
2.SQL Server开启表间关系,并实现删除母表数据自动删除子表数据:
创建外键 -> 在外键弹出窗口 Foreign Key Relationships窗口 -> 可以看到 INSERT AND UPDATE Secification -> 下边就是相应设置.(可用SQL语句设置)
今天关于Access和SQL Server计算日期的方式不同的介绍到此结束,谢谢您的阅读,有关.net(C#数据库访问) Mysql,Sql server,Sqlite,Access四种数据库的连接方式、Access 导入到SQL Server 2005的方法小结、access与SqlServer 时间日期比较、Access和SQL server开启表间关系,并实现更新或删除母表数据自动等更多相关知识的信息可以在本站进行查询。
本文标签: