当前位置: 首页 > 编程日记 > 正文

SQLite 日期类型(转)

SQLite日期类型

简单示例:

SELECT
    datetime(CHANGE_DATE,'localtime'),
    strftime('%Y-%m-%d',CHANGE_DATE,'localtime'),
    datetime('now','localtime'),
    strftime('%Y-%m-%d','now','localtime'),
    DATE('now','localtime'),
    time('now','Localtime'),
    time('2010-11-27 01:12:21','Localtime','-8 hour') as Time
FROM SALARY_HISTORY ;

SELECT * FROM SALARY_HISTORY WHERE date(CHANGE_DATE,'Localtime')=Date('now','Localtime')

Sqlite3支持的数据类型
NULL
INTEGER
REAL
TEXT
BLOB
但实际上,sqlite3也接受如下的数据类型:
smallint 16 位元的整数。
interger 32 位元的整数。
decimal(p,s) p 精确值和 s 大小的十进位整数,精确值p是指全部有几个数(digits)大小值,s是指小数点後有几位数。如果没有特别指定,则系统会设为 p=5; s=0 。
float 32位元的实数。
double 64位元的实数。
char(n) n 长度的字串,n不能超过 254。
varchar(n) 长度不固定且其最大长度为 n 的字串,n不能超过 4000。
graphic(n) 和 char(n) 一样,不过其单位是两个字元 double-bytes, n不能超过127。这个形态是为了支援两个字元长度的字体,例如中文字。
vargraphic(n) 可变长度且其最大长度为 n 的双字元字串,n不能超过 2000
date 包含了 年份、月份、日期。
time 包含了 小时、分钟、秒。
timestamp 包含了 年、月、日、时、分、秒、千分之一秒。

SQLite包含了如下时间/日期函数:
datetime().......................产生日期和时间
date()...........................产生日期
time()...........................产生时间
strftime().......................对以上三个函数产生的日期和时间进行格式化

datetime()的用法是:datetime(日期/时间,修正符,修正符...)
date()和time()的语法与datetime()相同。

在时间/日期函数里可以使用如下格式的字符串作为参数:
YYYY-MM-DD
YYYY-MM-DD HH:MM
YYYY-MM-DD HH:MM:SS
YYYY-MM-DD HH:MM:SS.SSS
HH:MM
HH:MM:SS
HH:MM:SS.SSS
now
其中now是产生现在的时间。

举例(写这个笔记的时间是2006年10月17日晚8点到10点,测试环境:SQLite 2.8.17,WinXP,北京时间):

例1.
select datetime('now');
结果:2006-10-17 12:55:54

例2.
select datetime('2006-10-17');
结果:2006-10-17 12:00:00

例3.
select datetime('2006-10-17 00:20:00','+1 hour','-12 minute');
结果:2006-10-17 01:08:00

例4.
select date('2006-10-17','+1 day','+1 year');
结果:2007-10-18

例5.
select datetime('now','start of year');
结果:2006-01-01 00:00:00

例6.
select datetime('now','start of month');
结果:2006-10-01 00:00:00

例7.
select datetime('now','start of day');
结果:2006-10-17 00:00:00

例8.
select datetime('now','+10 hour','start of day','+10 hour');
结果:2006-10-17 10:00:00

例9.
select datetime('now','localtime');
结果:2006-10-17 21:21:47

例10.
select datetime('now','+8 hour');
结果:2006-10-17 21:24:45

例3中的+1 hour和-12 minute表示可以在基本时间上(datetime函数的第一个参数)增加或减少一定时间。

例5中的start of year表示一年开始的时间。

从例8可以看出,尽管第2个参数加上了10个小时,但是却被第3个参数“start of day”把时间归零到00:00:00,随后的第4个参数在00:00:00
的基础上把时间增加了10个小时变成了10:00:00。

例9把格林威治时区转换成本地时区。

例10把格林威治时区转换成东八区。

strftime()函数可以把YYYY-MM-DD HH:MM:SS格式的日期字符串转换成其它形式的字符串。
strftime()的语法是strftime(格式, 日期/时间, 修正符, 修正符, ...)

它可以用以下的符号对日期和时间进行格式化:
%d 月份, 01-31
%f 小数形式的秒,SS.SSS
%H 小时, 00-23
%j 算出某一天是该年的第几天,001-366
%m 月份,00-12
%M 分钟, 00-59
%s 从1970年1月1日到现在的秒数
%S 秒, 00-59
%w 星期, 0-6 (0是星期天)
%W 算出某一天属于该年的第几周, 01-53
%Y 年, YYYY
%% 百分号

strftime()的用法举例如下:

例11.
select strftime('%Y.%m.%d %H:%M:%S','now','localtime');
结果:2006.10.17 21:41:09

函数篇:

算术函数
abs(X) 返回给定数字表达式的绝对值。
max(X,Y[,...]) 返回表达式的最大值。
min(X,Y[,...]) 返回表达式的最小值。
random(*) 返回随机数。
round(X[,Y]) 返回数字表达式并四舍五入为指定的长度或精度。
字符处理函数
length(X) 返回给定字符串表达式的字符个数。
lower(X) 将大写字符数据转换为小写字符数据后返回字符表达式。
upper(X) 返回将小写字符数据转换为大写的字符表达式。
substr(X,Y,Z) 返回表达式的一部分。
randstr()
quote(A)
like(A,B) 确定给定的字符串是否与指定的模式匹配。
glob(A,B)
条件判断函数
coalesce(X,Y[,...])
ifnull(X,Y)
nullif(X,Y)
集合函数
avg(X) 返回组中值的平均值。
count(X) 返回组中项目的数量。
max(X) 返回组中值的最大值。
min(X) 返回组中值的最小值。
sum(X) 返回表达式中所有值的和。
其他函数
typeof(X) 返回数据的类型。
last_insert_rowid() 返回最后插入的数据的ID。
sqlite_version(*) 返回SQLite的版本。
change_count() 返回受上一语句影响的行数。
last_statement_change_count()

管理工具:http://www.sqlitedeveloper.com/
   SQLite :http://sqlite.phxsoftware.com/

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/fer_ba/archive/2009/09/23/4582205.aspx

比如今天是:200-02-22
运行如下语句所得到的结果不一样:
select date('now')
结果:2009-02-21
select datetime('now','localtime')
结果:2009-02-22 00:52:04
--------------------------- 分隔线 --------------------------
所以比较时用第二种语句才取得正确结果,例如(取大于现在时间的记录):
select * from 表 where 日期字段>datetime('now','localtime')
好象没有MSSQL的datediff等函数
如下语句实现datediff('m',开始日期,结束日期')函数同一个数数据:
select * from 表 where strftime('%m',日期字段)=strftime('%m','now')
如此就可以实现了两个日期相比较,举一反三,同样使用strftime格式式日期来对日、周、年比较
参考Sqlite日期函数详细文档:
http://www.xueit.com/html/2009-02/27_649_00.html
--------------------------- 分隔线 如下收集于网络 -------------
select * from Placard where Placard_EndTime > datetime('now');

SELECT Placard_StartTime,strftime('%s',Placard_StartTime) , datetime('now'),strftime('%s','now') FROM Placard
差8个时区...
SELECT Placard_StartTime,strftime('%s',Placard_StartTime) , datetime('now','localtime'),strftime('%s','now','localtime') FROM Placard

上一条:大于指定时间的第一条        
select title,pubtime from article where pubtime>'2008-06-15 03:35:28' order by pubtime asc Limit 1 Offset 0

貌似时间的格式有严格的要求 2008-06-15 03:35:28 前面只能用 - 后面只能用:不足二位数的补零

下一条:小于指定时间的第一条
select title,pubtime from article where pubtime<'2008-06-15 03:35:28' order by pubtime desc Limit 1 Offset 0

注意时间的精度。03:35:28 后面就没有了。
03:35:28.000

文章来自学IT网:http://www.xueit.com/html/2009-02/27_647_00.html

‍这是我学习SQLite时做的笔记,参考并翻译了Chris Newman写的《SQLite》中的《Working with Dates and Times》一文中的部分内容。
SQLite包含了如下时间/日期函数:
datetime().......................产生日期和时间
date()...........................产生日期
time()...........................产生时间
strftime().......................对以上三个函数产生的日期和时间进行格式化

datetime()的用法是:datetime(日期/时间,修正符,修正符...)
date()和time()的语法与datetime()相同。
在时间/日期函数里可以使用如下格式的字符串作为参数:
YYYY-MM-DD
YYYY-MM-DD HH:MM
YYYY-MM-DD HH:MM:SS
YYYY-MM-DD HH:MM:SS.SSS
HH:MM
HH:MM:SS
HH:MM:SS.SSS
now
其中now是产生现在的时间。
举例(写这个笔记的时间是2006年10月17日晚8点到10点,测试环境:SQLite 2.8.17,WinXP,北京时间):
例1.
select datetime('now');
结果:2006-10-17 12:55:54
例2.
select datetime('2006-10-17');
结果:2006-10-17 12:00:00
例3.
select datetime('2006-10-17 00:20:00','+1 hour','-12 minute');
结果:2006-10-17 01:08:00
例4.
select date('2006-10-17','+1 day','+1 year');
结果:2007-10-18
例5.
select datetime('now','start of year');
结果:2006-01-01 00:00:00
例6.
select datetime('now','start of month');
结果:2006-10-01 00:00:00
例7.
select datetime('now','start of day');
结果:2006-10-17 00:00:00
例8.
select datetime('now','+10 hour','start of day','+10 hour');
结果:2006-10-17 10:00:00
例9.
select datetime('now','localtime');
结果:2006-10-17 21:21:47
例10.
select datetime('now','+8 hour');
结果:2006-10-17 21:24:45例3中的+1 hour和-12 minute表示可以在基本时间上(datetime函数的第一个参数)增加或减少一定时间。
例5中的start of year表示一年开始的时间。
从例8可以看出,尽管第2个参数加上了10个小时,但是却被第3个参数“start of day”把时间归零到00:00:00,随后的第4个参数在00:00:00
的基础上把时间增加了10个小时变成了10:00:00。

例9把格林威治时区转换成本地时区。

例10把格林威治时区转换成东八区。

strftime()函数可以把YYYY-MM-DD HH:MM:SS格式的日期字符串转换成其它形式的字符串。
strftime()的语法是strftime(格式, 日期/时间, 修正符, 修正符, ...)

它可以用以下的符号对日期和时间进行格式化:
%d 月份, 01-31
%f 小数形式的秒,SS.SSS
%H 小时, 00-23
%j 算出某一天是该年的第几天,001-366
%m 月份,00-12
%M 分钟, 00-59
%s 从1970年1月1日到现在的秒数
%S 秒, 00-59
%w 星期, 0-6 (0是星期天)
%W 算出某一天属于该年的第几周, 01-53
%Y 年, YYYY
%% 百分号
strftime()的用法举例如下:例11.
select strftime('%Y.%m.%d %H:%M:%S','now','localtime');
结果:2006.10.17 21:41:09
例11用圆点作为日期的分隔附,并把时间转换为当地的时区的时间。
更多关于SQLite日期时间函数方面的内容,可以参考Chris Newman写的《SQLite》(ISBN:0-672-32685-X)中的《Working with Dates and
Times》一文。

转载于:https://www.cnblogs.com/xmphoenix/archive/2011/05/23/2054022.html

相关文章:

Visual Studio Code常用插件

名称 功能 Chinese (Simplified) Language Pack for Visual Studio Code 汉化 VSCode Auto Close Tag 自动为写的html标签进行闭 合 Beautify 代码格式化 Element UI Snippets Element UI的代码提示功能 Material Icon Theme 为项目换上相应的图标 Vetur对vue代码进行高亮 View…

sqlserver导入excel的电话号码(身份证)变为科学计数解决方式

如果excel中有一列存的是手机号码或者身份证号码&#xff0c;那么导入到sql中时&#xff0c;会把手机或者身份证当作数字格式对待&#xff0c;因而会以科学记数法的形式存在sqlserver表中&#xff0c;解决方式&#xff0c;先将excel文件另存为文本文件&#xff08;制表符&#…

Git的其他用法

2019独角兽企业重金招聘Python工程师标准>>> 目录&#xff1a; 减少【.git】文件夹的大小和文件数更换git for windows的文本编辑器修改已经提交的commit说明合并commit解决merge时出现的冲突回退一个merge获取某一commit的修改将低版本push到Github&#xff08;删掉…

UE中的几个极有用功能

1. 指定目录和文件类型批量查找目标字符串 示例&#xff1a;在H:\qtdemo目录&#xff08;含子目录&#xff09;中下的*.h和*.cpp中&#xff0c;查找“main”字符串 查找结果&#xff1a; 2. 在当前活动窗口中查找目标字符串&#xff08;Ctrl F&#xff09; &#xff08;1&…

Missing space before value for key ‘routes‘ key-spacing

vue项目报错&#xff1a; Missing space before value for key ‘routes’ key-spacing 解决办法&#xff1a; 字母new前面应该是1个空格&#xff0c;我写了两个空格&#xff0c;删去一个空格即可

Oracle Mutex 机制 说明

之前也整理过一篇文章来说明Oracle Lock的&#xff0c;参考&#xff1a; 锁 死锁 阻塞 Latch 等待 详解 http://blog.csdn.net/tianlesoftware/archive/2010/08/19/5822674.aspx 在这篇文章里&#xff0c;提到了System Locks&#xff0c;它包含&#xff1a; &#xff08;1&…

POJ-1860-Currency Exchange

链接&#xff1a;https://vjudge.net/problem/POJ-1860 题意&#xff1a; 有N个点&#xff0c;支持货币兑换&#xff0c;从货币a->b手续费c&#xff0c;汇率r。 求能否换一圈使总净额增加。 思路&#xff1a; bellman-ford。 找一个正权回路。 代码&#xff1a; #include &l…

如果asp.net mvc中某个action被执行了两次,请检查是不是以下的原因

注释 <link rel"icon" href"#"> 这一句后试试转载于:https://www.cnblogs.com/lummon/p/4559185.html

vue常见错误汇总(自看)

解决办法汇总 eslint: Expected indentation of 2 spaces but found 4缩进报错 &#xff0c;所有缩进只能用两个空格 Newline required at end of file but not found需要在最后的后面再加一行!!! Missing space before value for key ‘name’在关键字“值”之前缺少空格 …

IOS的钥匙串,确保本地隐私数据的安全

* 苹果的"生态圈"&#xff0c;钥匙串访问&#xff0c;使用 AES 256 加密算法&#xff0c;能够保证用户密码的安全 * 钥匙串访问SDK&#xff0c;是苹果在 iOS 7.0.3 版本以后公布的 * 钥匙串访问的接口是纯 C 语言的&#xff0c;但是&#xff0c;网络上有框架把它封装…

【转】PendingIntent的总结

Intent和PendingIntent的关系&#xff0c;初学的时候很迷惑&#xff0c;用PendingIntent的时候&#xff0c;还会出现奇怪的问题&#xff0c;比如无法传递数据&#xff0c;无法更新数据&#xff0c;所以我集众家之长&#xff0c;加上我个人的一些实践&#xff0c;总结如下&#…

CentOS 7 安装 GlusterFS

目录 环境说明&#xff1a; 3台机器安装 GlusterFS 组成一个集群。 使用 docker volume plugin GlusterFS 服务器&#xff1a; 10.6.0.140 10.6.0.192 10.6.0.196转载于:https://www.cnblogs.com/MeiCheng/p/10274222.html

npm安装less报错 rollbackFailedOptional: verb npm-session

解决办法 在cmd中依次输入然后回车 &#xff08;1&#xff09; npm install -g cnpm --registryhttps://registry.npm.taobao.org &#xff08;2&#xff09; cnpm install less less-loader --save-dev

Online Judge上陪审团选人问题用Java实现的一个AC解

原问题位于&#xff1a;http://poj.org/problem?id1015 以下为问题描述的摘录&#xff1a; In Frobnia, a far-away country, the verdicts in court trials are determined by a jury consisting of members of the general public. Every time a trial is set to begin, a j…

【D3】transition API

摘要&#xff1a; 动画类API 一、API 使用 1. 1 d3.ease 1.2 d3.timer Start a custom animation timer, invoking the specified function repeatedly until it returns true. There is no way to cancel the timer after it starts, so make sure your timer function return…

微信小程序 - 富文本图片宽度自适应(正则)

引言&#xff1a;在微信小程序里&#xff0c;比如商品展示页面的商品详情会有图片展示&#xff0c;PC端设置的商品详情是PC端的宽度&#xff0c;所以在小程序里图片会显示不全&#xff0c;这时就应该做相应的处理&#xff0c;使小程序里图片显示正确 思路 把图片的宽度改为手机…

(1)01背包问题

#include <stdio.h> #define N 6 #define M 21 #define W 20 int dp[N][M]; int w[N] {0}; int v[N] {0}; void knapsack(){int i, j;int value1, value2;for(i 1; i < N; i){ // 前i件物品for(j 1; j < N; j){ // 背包剩余空间if(w[i] > j){ // 第i件物品太…

Web.Config文件配置之限制上传文件大小和时间

在邮件发送系统或者其他一些传送文件的网站中&#xff0c;用户传送文件的大小是有限制的&#xff0c;因为这样不但可以节省服务器的空间&#xff0c;还可以提高传送文件的速度。下面介绍如何在Web.Config文件中配置限制上传文件大小与时间。 在Web.Config文件中配置限制上传文件…

成为软件高手的几个忌讳

1&#xff09; 不会英语&#xff1a;CS源于美国&#xff0c;重量级的文档都是英文的。不会英语&#xff0c;那么你只能忍受拙劣的翻译和大延迟的文档&#xff08;翻译出来的文档几乎都是很久以前出版的东西&#xff09;。2&#xff09; 急于求成&#xff1a;什么都没学习就开始…

Linux下的redis的持久化,主从同步及哨兵

redis持久化 Redis是一种内存型数据库&#xff0c;一旦服务器进程退出&#xff0c;数据库的数据就会丢失&#xff0c; 为了解决这个问题&#xff0c;Redis提供了两种持久化的方案&#xff0c;将内存中的数据保存到磁盘中&#xff0c;避免数据的丢失。 RDB持久化 redis提供了RDB…

vue/require-v-for-key]Elements in iteration expect to have ‘v-bind:key‘ directives

报错内容&#xff1a;[vue/require-v-for-key]Elements in iteration expect to have v-bind:key directives.解决&#xff1a;加上v-bind:key"index"<p>主演:<!--显示电影主演&#xff0c;循环--><span v-for"(actor, index) in scope.row.act…

@Ignore_JUnit - Ignore Test

Ignore 用法很简单, 如果你的测试用例还没有准备好而不想被执行, 又不想删掉或注释掉, 可以使用 Ignore 标注来忽略测试。 方法一旦用 Ignore 注解了将不会被执行. 如果一个类用 Ignore 注解了 他下面的所有测试方法将不会被执行. 看个应用 Create a Class Create a java clas…

Redis5.0之Stream案例应用解读

2019独角兽企业重金招聘Python工程师标准>>> 非常高兴有机会和大家在这里交流Redis5.0之Stream应用。今天的分享更多的是一个抛砖引玉&#xff0c;欢迎大家提出更多关于Redis的思考。 首先&#xff0c;我们来个假设&#xff0c;这里有个杯子&#xff0c;这个杯子是去…

往阿里云服务器上安装Mysql

在安装完Mysql后要进行登录&#xff0c;这时候显示让你输密码&#xff0c; 我点击键盘发现怎么没有密码出现&#xff0c; 然后我就把Mysql卸载了重新装的&#xff0c;折腾了2个多小时&#xff0c; 最后&#xff0c;我突然想试试直接输密码然后就回车&#xff0c; 发现成功进入数…

PHP中spl_autoload_register函数的用法

spl_autoload_register(PHP 5 > 5.1.2)spl_autoload_register — 注册__autoload()函数说明bool spl_autoload_register ([ callback $autoload_function ] )将函数注册到SPL __autoload函数栈中。如果该栈中的函数尚未激活&#xff0c;则激活它们。如果在你的程序中已经实现…

Linux初步——常用简单命令

散乱的记录&#xff0c;目前是边学边用&#xff0c;以后有机会再整理 curl命令 发起一个HTTP请求&#xff0c;如&#xff1a;curl "http://www.baidu.com" 加上-I选项查看HTTP协议头的信息&#xff0c;如&#xff1a;curl "http://www.baidu.com" -I Linux…

Centos-Mysql配置my.cnf内容

#v1.0 [mysqld] #通用 #skip-grant-tables 跳过授权密码登录 port3306 #使用mysql系统账号操作进程 usermysql socket/var/lib/mysql/mysql.sock #basedir/usr datadir/var/lib/mysql #mysql错误日志 log_error /tmp/ch_mysql_log/error.log #mysql所有操作日志 生产服务器不…

本地navicat连接阿里云数据库

自己起连接名字&#xff1b; prot:填公网IP&#xff08;服务器给的&#xff09; password&#xff1a;填阿里云数据库的密码

adb logcat命令查看并过滤android输出log

adb logcat命令查看并过滤android输出log cmd命令行中使用adb logcat命令查看android系统和应用的log&#xff0c;dos窗口按ctrlc中断输出log记录。 logcat日志中的优先级/tag标记&#xff1a; android输出的每一条日志都有一个标记和优先级与其关联。 优先级是下面的字符&…

重读TCP协议(3)

重读TCP协议&#xff08;3&#xff09; TCP 的数据流TCP的数据流大致可以分为两类&#xff0c;交互数据流与成块的数据流。交互数据流就是发送控制命令的数据流&#xff0c;比如relogin&#xff0c;telnet&#xff0c;ftp命令等等&#xff1b;成块数据流是用来发送数据的包&…