SQLite数据库BigINT类型日期数据查询

SQLite数据库学习(基础语法篇) 基础语法篇(SQL语句操作SQLite数据库)详细篇 阅读详情

定义了一个结构,包含一个DateTime类型的属性:

private DateTime _FromTime = DateTime.Now;

在创建SQLite数据库连接实例时,如果我们将storeDateTimeAsTicks参数设置为true:

        /// <summary>
        /// 创建SQLite连接
        /// .db文件不存在时创建,存在时读写,日期类型存为ticks
        /// </summary>
        /// <param name="sDbPath">.db文件路径</param>
        /// <returns>数据库的连接</returns>
        public static SDNConn CreateInstance(string sDbPath)
        {
            return new SDNConn() { Connection = new SQLite.SQLiteConnection(sDbPath, SQLite.SQLiteOpenFlags.ReadWrite | SQLite.SQLiteOpenFlags.Create | SQLite.SQLiteOpenFlags.SharedCache, true) };
        }

    /// <summary>
    /// Constructs a new SQLiteConnection and opens a SQLite database specified by databasePath.
    /// </summary>
    /// <param name="databasePath">
    /// Specifies the path to the database file.
    /// </param>
    /// <param name="openFlags">
    /// Flags controlling how the connection should be opened.
    /// </param>
    /// <param name="storeDateTimeAsTicks">
    /// Specifies whether to store DateTime properties as ticks (true) or strings (false). You
    /// absolutely do want to store them as Ticks in all new projects. The value of false is
    /// only here for backwards compatibility. There is a *significant* speed advantage, with no
    /// down sides, when setting storeDateTimeAsTicks = true.
    /// If you use DateTimeOffset properties, it will be always stored as ticks regardingless
    /// the storeDateTimeAsTicks parameter.
    /// </param>
    public SQLiteConnection(string databasePath, SQLiteOpenFlags openFlags, bool storeDateTimeAsTicks = true)
    {
      if (string.IsNullOrEmpty(databasePath))
        throw new ArgumentException("Must be specified", nameof (databasePath));
      this.DatabasePath = databasePath;
      sqlite3 db;
      SQLite3.Result r = SQLite3.Open(databasePath, out db, (int) openFlags, IntPtr.Zero);
      this.Handle = db;
      if (r != SQLite3.Result.OK)
        throw SQLiteException.New(r, string.Format("Could not open database file: {0} ({1})", new object[2]
        {
          (object) this.DatabasePath,
          (object) r
        }));
      this._open = true;
      this.StoreDateTimeAsTicks = storeDateTimeAsTicks;
      this.BusyTimeout = TimeSpan.FromSeconds(0.1);
      this.Tracer = (Action<string>) (line => {});
    }

则在创建SQLite数据表时,日期类型将自动保存为BIGINT类型:

CREATE TABLE [PictureMetadata](
  [OperatorType] integer, 
  [Person] varchar, 
  [FromTime] BIGINT, 
  [ToTime] bigint, 
  [Path] varchar, 
  [GlobalID] varchar PRIMARY KEY NOT NULL, 
  [TaskID] varchar, 
  [TaskID2] varchar, 
  [ResourceType] integer, 
  [ResourceGID] varchar, 
  [SourcePath] varchar);

在进行查询时,我们采用如下如下语句:

select datetime(FromTime/10000000 - 62135596800, 'unixepoch') mytime from PictureMetadata

结果中的BIGINT型数据 636652579650855945 将被格式化为 2018-06-22 09:52:45 。

那么问题来了,我们存入的时间数据 2018-06-22 09:52:45 是怎样被保存 636652579650855945 的呢?

首先我们需要明白,时间戳 unixepoch 表示返回的是国际协调时间UTC,该时间采用的是格列高利历Gregorian Calendar(标准阳历)基准,并将返回日期解释为UNIX时间,即自1970-01-01以来的秒数。

我们在查询秒数时,采用如下语句:

SELECT strftime('%s','2018-06-22 09:52:45')+62135596800 AS ticks;

与采用如下语句:

SELECT (((JulianDay('2018-06-22 09:52:45') - 2440587.5)*86400.0) + 62135596800) AS ticks

将会得到相同的结果,即 63665257965。

这两种查询方式,得到的都是标准阳历以来的秒数。

按标准阳历,自公元0001-01-01至1970-01-01之间的1969年中,有477年是闰年,则这期间的时间为:1969*365+477=719162天=62135596800秒。于是,我们要保存的时间 2018-06-22 09:52:45 相较 1970-01-01 是 1529661165 秒,加 62135596800 后为 63665257965 ,即JulianDay的时间。

这个时间的单位是秒。UTC采用的国际原子时的准确度为每日数纳秒(一秒的十亿分之一),我们将秒转化成100纳秒为单位,则须乘以一千万即10000000,得到 636652579650000000 。

这是一种精确到纳秒的算法。另外,我们还可以先计算当前时间距离标准阳历 0001-01-01 以来的天数(包含小数),然后转化成以100纳秒为单位的数,得 636652579650855945 。

SQLite 数据类型 SQLite 允许用户定义自己的数据类型,通过使用语句。SQLite 数据类型是数据库设计的基础,正确使用数据类型可以确保数据的准确性和完整性。在创建表时,根据实际需求选择合适的数据类型,可以使数据库更高效、更易于维护。以上是 SQLite 数据类型的基本介绍,希望对您有所帮助。如需了解更多关于 SQLite 的知识,请继续关注后续文章。 阅读详情

相关推荐

SqLite3基本操作

嵌入式开发数据库:SQLite, FireBird, eXtremetDB,3万行的基于c和c++的源码,SQLite数据库,是一个非常轻量级自包含(lightweight and self-contained)的DBMS,它可移植性好,很容易使用,很小,高效而且可靠。 SQLite嵌入到使用它的应用程序中,它们共用相同的进程空间,而不是单独的一个进程。从外部看,它并不像一个RDBMS,但在进程内部,它却是完整的,自包含的数据库引擎。 嵌入式数据库的一大好处就是在你的程序内部不需要网络配置,也不需要管.

Jovan的博客 6947

在SQLite中是否有Long类型

通常情况下,SQLite根据存储的数据自动选择合适的整数类型。例如,如果要插入的整数值超出了INTEGER类型的范围,则SQLite将自动将其存储为BIGINT类型。因此,在大多数情况下,不需要特别指定使用哪种整数类型。相反,SQLite使用不同的数据类型来存储整数值,例如INTEGER、BIGINT、SMALLINT和TINYINT。根据需要,这些整数类型可以存储不同的整数范围。在上述示例中,我们创建了一个名为”users”的表,其中包含了不同整数类型的列。根据实际需求,可以选择使用适当的整数类型。

chuyouyinghe的专栏 2545

某10kV纺织厂供电系统设计【CAD图纸源码+Word文档】

本文详细介绍了设计变电所原始资料,负荷统计,基于负荷统计给出了变压器的选型,变电所主接线方式的设计、高低压母线、电缆的技术要求、短路电流的计算以及相关电气设备的保护参数及保护定值的计算、安全措施的规定。

weixin_761237174的博客 2744

SQL数据库数据类型详解

数据类型 类型 描 述 bit 整数 bit 数据类型是整型,其值只能是0、1或空值;这种数据类型用于存储只有两种可能值的数据,如Yes 或No、True 或Fa lse 、On 或Off int 整数 int 数据类型可以存储从- 231(-2147483648)到231(2147483 647)之间的整数;存储到数据库的几乎所有数值型的数...

weixin_30375247的博客 422

爬虫-Playwright逆向小红书

【代码】爬虫-Playwright逆向小红书。

weixin_44201223的博客 2432

5分钟搞定SNMP工具安装:从Linux到Windows的snmpwalk/snmpget全攻略

本文提供了SNMP工具(snmpwalk/snmpget)在Linux和Windows系统上的快速安装与使用指南,涵盖从基础安装到高阶应用的全面解析。通过详细的命令示例和故障排查技巧,帮助用户快速掌握网络设备监控与诊断的核心技能,提升运维效率。

weixin_29248313的博客 557

嵌入式数据库开发编程(三)——sqlite3数据类型和存储类型

SQL语言、数据类型

河海大学研究生在读的学习笔记 4496

别再傻傻分不清了!STM32定时器里Prescaler和ClockDivision到底有啥区别?

本文深入解析STM32定时器中Prescaler和ClockDivision的区别与应用场景。Prescaler作为定时器的'心跳调节器',决定计数频率;而ClockDivision则是输入捕获的'抗噪滤镜',有效抑制高频噪声。通过实战案例和示波器实测数据,帮助开发者避免常见配置误区,提升嵌入式系统稳定性。

weixin_29193259的博客 319

SQLite数据库以及FMDB的使用

iOS中,使用的是SQLite数据库 但是原生SQLite用起来比较麻烦,所以FMDB对他进行了封装 通过FMDB,可以使用SQL语句进行数据库操作

念念不忘,必有回响。 832

换频道——假想《道德经》与量子力学的一些联系

之前看到一位AI PM的前辈分享了自己对于PM境界的看法: 境界一,行事被放心。 境界二,独立主导产品线从0到1,做正确的事,并把事做正确。 境界三,一切以灵魂境界为基础,产品作为其理念的衍生。 对于我,3个月尝试于目标而无获,但塞翁失马焉知非福。自己已经具备境界一,虽然境界二尚未成熟,但境界三却有幸有所思考。 今天,往澳门的动车途中有感而发,为随笔。

1023

nnU-Net v2实战:从零开始配置环境与训练自定义医学影像数据集

本文详细介绍了nnU-Net v2在医学影像分割中的实战应用,从环境配置到自定义数据集训练的全流程。重点讲解了Python 3.9+环境搭建、PyTorch安装技巧、医学影像数据预处理规范,以及五折交叉验证训练方法,帮助开发者快速掌握这一先进的医学影像分析工具。

weixin_28718487的博客 352

sqlite3 关系型数据库语言 SQL 语言

上面语句就是新建一个 CJB 表格,其中 ID 是外键,这个外键是 STU 表格中的主键,其中这个 REFERENCES 是外键约束,表示这个外键是哪个表里的主键。包括 CHAR、VARCHAR(变长字符串)、BINARY(二进制)、VARBINARY(变长二进 制)、BLOB、TEXT(文本)、ENUM(枚举) 和 SET 等。2.查看表 STU,CJB 和 KCB 中相关列满足 STU.ID = CJB.ID 且 KCB.KCH = CJB.KCH 条件的数据。//降序排序并只查看前 3 行。

jiu_yue_ya的博客 1465

9.23华为OD机试真题 新系统 - 小菊的寻宝之旅 (Java/Py/C/C++/Js/Go)

9.23华为OD机试真题 新系统 - 小菊的寻宝之旅 (Java/Py/C/C++/Js/Go)

算法大师! 1012

SQL 数据库中的数据类型

以上是常见的 SQL 数据库数据类型及其使用示例。根据具体需求和数据库系统的特性,选择适合的数据类型可以提高数据存储和查询的效率。

weixin_60755571的博客 803

Allegro如何用自带的功能将线段变成铜皮操作指导

在做PCB设计的时候,有时根据设计需要将线段变成铜皮,可以借助辅助工具来实现这一操作,但是Allegro自身也自带这个功能,如下图。勾选Delete original objects。如何用自带的功能将线段变成铜皮操作指导。勾选Convert to shape,需要把这段走线变成铜皮。

weixin_54787054的博客 2947

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

SQLite(1)--SQL基本概念

1.基本概念SQL:结构化查询语言(Structured Query Language),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。 SQL 指结构化查询语言 . SQL 使我们有能力访问数据库 . SQL 是一种 ANSI 的标准计算机语言. 2.SQL 能做什么? SQL 面向数据库执行查询. SQ

高级软件开发工程师--周玉的博客 728

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

SQL语言和数据库管理系统(MySQL)

数据太多,文件搞不定。数据库,

qq_53766808的博客 1025

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

sqlite基本原理介绍与操作

sqlite 基本介绍 引题 为什么使用数据库: 之前的学习中,我们已经可以存储数据,变量,读写本地文件(txt,csv). 1. 持久化,内存中的变量当程序重启和电脑断电丢失数据,而硬盘可以长时间,持久地存储数据,数据存储到硬盘上的过程叫持久化, 2数据库更加专业强大。远比纯文本文档、excel表格强大,增删改查和统计函数。 数据库基本概念 观察表格、excel表格 ,打开了 学生列表.xls ...

qq_41277632的博客 1870

数据库介绍常用数据库,SQL增删改查

引题 为什么使用数据库: 之前的学习中我们已经可以储存数据、变量、读写本地文件(txt、csv) 1.持久化。内存中的变量当程序重启和电脑断电时丢失数据,而硬盘可以长时间、持久的储存数据。数据储存到硬盘上的过程叫持久化。 2.数据库更加专业强大。远比纯文本文档、excel表格强大,增删改查和统计函数。 数据库基本概念 观察表格、excel表格,打开了 学生列表.xls excel表格文档。类比引...

尼古拉斯_Kai 511

MySQL之简介以及数据类型(一)

一:关系型数据库   所谓的关系型数据库RDBMS,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。 二:关系型数据库的主要产品: oracle:在以前的大型项目中使用,银行,电信等项目 mysql:web时代使用最广泛的关系型数据库 ms sql server:在微软的项目中使用 sqlite:轻量级数据库,主要应用在移动平台 ...

weixin_30876945的博客 159

数据库(上)

1.数据库概述 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,其本身可以看作电子化的文件柜,用户可以对文件中的数据进行增加、删除、修改、查找等功能。 数据库系统由数据库、数据库管理系统、数据库应用程序等组成 2.数据库分为关系型数据库和非关系型数据库2.1关系型数据库(Relational database) 常见的关系型数据库 : MYSQL、Oracle、DB2、Micr

eternally__的博客 372

数据库学习篇一

数据库学习篇一数据库学习概述数据库类型数据类型主流关系型数据库关于SQL的说明 数据库学习概述 数据库作为一种专门管理数据的软件因为对数据的需求不断增长从而出现了。应用程序不需要自己管理数据,而是通过数据库软件提供的接口来读写数据。至于数据本身如何存储到文件,那是数据库软件的事情,应用程序自己并不关心,其框架如下: application ▲ read write ▼ database 因此编写应用程序的时候,数据读写的功能

cug-jdc的博客 211

Qt实现按照时间查询数据库中的数据

效果: 原理: 1.在保存数据的时候就需要记录当前数据条目的时戳,我是按照1970-01-01 08:00:00为起始时间点,计算当前时间离这个起始时间一共是多少毫秒,如下: QDateTime origin_time = QDateTime::fromString("1970-01-01 08:00:00","yyyy-MM-dd hh:mm:ss"); QDateTime current_t...

weixin_43935474的博客 7598

数据库基础知识总结 | 概念+基础用法

本文总结了数据库相关核心概念和技术要点。主要内容包括:1)数据库基本概念与发展历程,从文件型到关系型数据库;2)关系型数据库的核心要素(二维表结构、表间关系)和SQL语言分类(DDL、DML、DQL、DCL);3)数据库连接方式与常用命令(创建库/表、数据类型、7种约束类型);4)DML操作(增删改)与DCL权限管理;5)数据库三大范式原则;6)DQL查询语句语法及高级查询技巧(条件、排序、模糊查询、去重)。文章系统梳理了数据库基础知识点,适合快速回顾核心内容。

weixin_45754224的博客 576

数据库基础知识(mysql)

数据库的基础知识 1.数据库(Database,DB) 按照数据结构来组织、存储和管理数据的仓库,其本身可看作电子化的文件柜,用户可以对文件中的数据进行增加、删除、修改、查找等操作 2.数据库管理系统(DBMS) 数据库 数据库管理系统 关系型数据库:MySQL、oracle(oracale),MSSQL、Access、excel,(mysofeware)DB2(IBM)

syp_snowy的博客 459

MySQL数据库从入门到单表实操(DDL/DML/DQL全解)

摘要 本文系统介绍了MySQL数据库的核心概念和基础操作,涵盖数据库三层架构、SQL语法分类、数据表设计规范等关键知识点。

Angela Staunch Fan 275
上一篇: SQLite操作类Sqlite Dot Net即SQLite.SQLiteConnection的常用方法
下一篇: C#写WebAPI时的Response Body模型定义
acngiser
博客等级 码龄15年 118粉丝 214原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值