我想要做的就是选择两个日期之间的记录到第二精度(在YYYY-MM-DD HH:II:SS和YYYY-MM-DD HH:II:SS之间).包含日期和时间的字段采用TIMESTAMP格式.我甚至无法按日期选择记录.
查询
SELECT *
FROM INVOICE
WHERE CAST(INVOICE.WHENINVOICED AS DATE) = CAST('2010-10-15' AS DATE)
ORDER BY INVOICE.WHENINVOICED ASC
Run Code Online (Sandbox Code Playgroud)
不返回任何记录,也没有错误.此日期存在记录.
如果Interbase和Firebird都安装在同一工作站上,是否存在任何冲突?有没有人有任何提示或最佳做法?
我们遇到了一个非常尴尬的问题.似乎某些网络或服务器错误导致前端应用程序获得两次生成器值.
是否有可能获取(和更新)生成器值保留在内存中,并且在断电的情况下,它保留在内存中不会被写入磁盘,因此当电源恢复时,它会丢失它的当前值,所以我们可以再次获得发电机价值?
我们使用的是Firebird 1.5.6,Delphi(BDE和本地IBExpert组件).
谢谢,SanTa
更新1:原来,服务器是一些Linux,如果它有帮助...
retreiving最后插入的id
我想从firebird数据库中检索最后插入的id.数据是succ.插入,触发器使用生成器插入ID.
我建议使用这种语法
var sql = "INSERT INTO ... VALUES ... " +
"RETURNING Id";
Run Code Online (Sandbox Code Playgroud)
其中RETURNINGId应该返回表Id.
我不知道如何存储到变量中.
int lastId = ...
Run Code Online (Sandbox Code Playgroud) 今天如何在火鸟的YYYYMMDD中获取日期,我看了下面但是无法想出怎么写这个.
我使用FireDac和HTTPServer组件使用Delphi构建了一个Web API:应用程序正在使用由firebird提供支持的dbms.
一切都工作正常,直到我开始模拟对同一API端点的多个请求.这导致内部服务器异常报告在已经打开事务时打开第二个trasaction.
我知道所有连接在被使用后被关闭并且对象被销毁以防止内存泄漏但我无法理解为什么应用程序会触发异常.
任何帮助或强硬可能会让我找到解决方案?
有没有可能从firebird服务器接收命令历史记录?我在其他引擎中看到类似的东西,提交的命令保存在txt文件中.
我正在使用asp.net c#webforms framework 4.5开发一个项目,并且我在Firebird数据库上进行了连接测试,但当我关闭此连接时它没有关闭,我使用以下代码来执行此操作:
string conDDNS;
FbConnection conexaoDDNS;
protected void Abrir_Fechar_Click(object sender, EventArgs e)
{
try
{
this.conDDNS = "DRIVER=InterBase/Firebird(r) driver;User=SYSDBA;Password=masterkey;Database=localhost:C:/AdCom/ADCOM.FDB";
this.conexaoDDNS = new FbConnection(conDDNS);
this.conexaoDDNS.Open();
ListItem item = new ListItem("Conexão aberta");
ListBox1.Items.Add(item);
this.conexaoDDNS.Dispose();
this.conexaoDDNS.Close();
ListItem item2 = new ListItem("Conexão fechada");
ListBox1.Items.Add(item2);
}
catch (Exception erro)
{
ListItem item = new ListItem(erro.ToString());
ListBox1.Items.Add(item);
}
}
Run Code Online (Sandbox Code Playgroud)
我已经使用了.Close()和.Dispose()命令,但它没有用.
当我进行这个调试时,我意识到当它通过.Open()命令传递时它会打开连接,这没关系.但是当它通过.Close()命令时,连接仍然在数据库上打开.
要知道在数据库上打开的连接数,我使用以下命令:
select * FROM MON$ATTACHMENTS
Run Code Online (Sandbox Code Playgroud) 我正在使用Firebird数据库,但是使用大多数其他数据库引擎的SQL语法进行的回答也是可以接受的。
我有两个表:
WORKER
workerid: integer
worker names and so ot.
LOGEVENT
logeventid: integer
logday: integer
workerid: integer
Run Code Online (Sandbox Code Playgroud)
因此,LOGEVENT表用于跟踪工作人员登录。为了简单起见,我将logday用作代表登录日的整数。例如,可能是一年中的1到365。
因此,典型的日志表可能如下所示:
logeventid logday workerid
1 5 3
2 5 4
3 5 3
4 5 7
5 6 4
6 6 3
7 6 4
Run Code Online (Sandbox Code Playgroud)
如图所示,id = 3的工作人员在第5天进行了两次登录。
现在,我需要创建一个SQL查询,每天产生总数为“唯一”的登录(同一工作人员在同一天的几次登录应计为一个事件)。
以下查询:
select count(logeventid) as logincount, logday from logevent
group by logday
order by logday
Run Code Online (Sandbox Code Playgroud)
第5天将显示logincount = 4。因为它两次计数了id = 3的工人。虽然我必须只计算不同的工作人员登录。因此,我需要一个查询,在第5天仅产生3次登录。
从Firebird 2.5迁移到3.0后,当我尝试使用C#程序测试数据库的连接时,会出现此错误"远程接口拒绝连接".
这是测试连接的代码,当我尝试连接到firebird 2.5数据库时,我使用此代码.
txtPassword.Properties.UseSystemPasswordChar = true;
txtHostname.Text = Properties.Settings.Default.server;
txtUsername.Text = Properties.Settings.Default.user;
txtPassword.Text = Properties.Settings.Default.pass;
txtDBPath.Text = Properties.Settings.Default.dbpath;
void Testdbconn()
{
try
{
var testInMemUnicode =
String.Format("DataSource={0};Database={1};User ID={2};Password={3}; Charset=NONE;",
txtHostname.Text,
txtHostname.Text + ":" + txtDBPath.Text.Trim(),
txtUsername.Text,
txtPassword.Text);
var testConnParam = new FbConnection(testInMemUnicode);
testConnParam.Open();
XtraMessageBox.Show(@"Connection to the server is successful.", @"Data Server Test",
MessageBoxButtons.OK,
MessageBoxIcon.Information);
}
catch (Exception errorCode)
{
XtraMessageBox.Show(@"Error in connection: " + errorCode.Message,
@"Server Error",
MessageBoxButtons.OK,
MessageBoxIcon.Exclamation);
}
}
class ClsConnection
{
public static string FirebirdSQL = …Run Code Online (Sandbox Code Playgroud)