百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT技术 > 正文

SQLite - 日期时间函数 - STRFTIME

wptr33 2025-05-21 16:53 7 浏览

在 SQLite 中,strftime 函数是一个非常强大且灵活的日期和时间格式化函数,它可以根据指定的格式字符串将日期和时间值转换为特定格式的字符串,同时也能从日期和时间值中提取特定的信息。以下是对其使用方法的详细解释及示例。

基本语法

strftime(format, timestamp_value [, modifier1, modifier2, ...])
  • format:这是必需的参数,是一个格式字符串,用于指定输出的日期和时间格式。格式字符串中可以包含各种格式化指令,这些指令以 % 开头,用于表示不同的日期和时间部分。
  • timestamp_value:同样是必需的参数,可以是一个日期时间字符串,也可以是一个符合 SQLite 日期时间格式的表达式,或者是 'now' 表示当前日期和时间。
  • modifier1, modifier2, ...:可选参数,是一系列的修饰符,用于对日期和时间进行调整,如 '+N days' 表示在原日期基础上加上 N 天,'-N months' 表示减去 N 个月等。

常见的格式化指令

格式化指令

描述

%Y

四位数的年份(例如:2024)

%m

两位数的月份(01 - 12)

%d

两位数的日期(01 - 31)

%H

24 小时制的小时数(00 - 23)

%M

分钟数(00 - 59)

%S

秒数(00 - 59)

%w

星期几,0 表示星期日,1 - 6 分别表示星期一到星期六

%j

一年中的第几天(001 - 366)

%s

Unix 时间戳,即从 1970 年 1 月 1 日 00:00:00 UTC 开始到指定时间所经过的秒数

使用示例

1. 格式化当前日期和时间

-- 获取当前日期和时间,并格式化为 'YYYY-MM-DD HH:MM:SS' 的形式
SELECT strftime('%Y-%m-%d %H:%M:%S', 'now');

-- 获取当前日期,并格式化为 'Month Day, Year' 的形式
SELECT strftime('%m %d, %Y', 'now');

2. 格式化指定日期和时间

-- 将指定的日期时间字符串格式化为 'Day/Month/Year' 的形式
SELECT strftime('%d/%m/%Y', '2024-10-15 14:30:00');

-- 从表中获取日期时间列,并格式化为 'Year-Month' 的形式
CREATE TABLE events (
    event_id INTEGER PRIMARY KEY,
    event_datetime TEXT
);
INSERT INTO events (event_datetime) VALUES ('2025-03-20 09:45:00');
SELECT 
    event_id,
    strftime('%Y-%m', event_datetime) AS formatted_date
FROM 
    events;

3. 结合修饰符进行日期和时间的调整与格式化

-- 在当前日期基础上加上 5 天,并格式化为 'YYYY-MM-DD' 的形式
SELECT strftime('%Y-%m-%d', 'now', '+5 days');

-- 在指定日期基础上减去 1 个月,并格式化为 'Month Day, Year' 的形式
SELECT strftime('%m %d, %Y', '2024-10-15', '-1 months');

4. 提取日期和时间的特定信息

-- 提取指定日期是一年中的第几天
SELECT strftime('%j', '2024-10-15');

-- 从表中获取日期时间列,并提取其对应的星期几
SELECT 
    event_id,
    strftime('%w', event_datetime) AS day_of_week
FROM 
    events;

5. 将日期时间转换为 Unix 时间戳

-- 将指定的日期时间转换为 Unix 时间戳
SELECT strftime('%s', '2024-10-15 14:30:00');

-- 从表中获取日期时间列,并转换为 Unix 时间戳
SELECT 
    event_id,
    strftime('%s', event_datetime) AS unix_timestamp
FROM 
    events;

注意事项

  • 日期时间格式:输入的 timestamp_value 应符合 SQLite 的日期时间格式,常见的是 YYYY-MM-DD HH:MM:SS,否则可能会导致结果不准确。
  • 时区问题:strftime 函数默认使用 UTC 时区。如果需要处理本地时间,可以结合 'localtime' 修饰符,例如 SELECT strftime('%Y-%m-%d %H:%M:%S', 'now', 'localtime');。
  • 修饰符顺序:当使用多个修饰符时,修饰符的顺序会影响最终的结果,因为 SQLite 会按照修饰符出现的顺序依次对日期和时间进行调整。

相关推荐

七爪源码:修复 JavaScript 错误的 4 种方法

修复JavaScript中“无法读取Undefined的属性‘push’”错误的4种方法了解如何轻松修复JavaScript中的“无法读取未定义的属性‘push’”错误。当您尝试对旨在...

jQuery EasyUI使用教程:在数据网格中添加一个分页

jQueryEasyUI最新版下载>本教程中涉及的示例演示了如何从服务器端加载数据,如何添加分页组件到数据网格中。创建数据网格想要从远程服务器端加载数据,首先你应该设置“URL”属性,服务器端...

如何避免 JS 内存泄漏?(js如何防止内存泄漏)

很多开发者可能平时并不关心自己维护的页面是否存在内存泄漏,原因可能是刚开始简单的页面内存泄漏的速度很缓慢,在造成严重卡顿之前可能就被用户刷新了,问题也就被隐藏了,但是随着页面越来越复杂,尤其当你的页面...

100个最常用的PHP函数(记得收藏哦)

下面的列表是最常用的前100个PHP函数:它们是最常用的PHP中自带的函数。这些函数被命名使用,并从1到100进行排序。其他的4500个函数现在还没在排名中。下面频率列表表...

HarmonyOS实战:3秒实现一个自定义轮播图

前言轮播图作为应用程序中最普通使用的控件被广泛应用,相信对于来发者来说并不陌生。在Android中实现一个轮播图很多选择使用第三方的插件,毕竟在有限的开发排期中自己动手去实现一个轮播图并不那么...

稀疏数组——前端电子表格中的应用实战

前文中我们详细介绍过稀疏数组的那些事儿,以及在实际项目中,稀疏数组如何在前端电子表格中发挥出它最大的效果。而这次,我们将从实战应用出发,为大家介绍稀疏数组在前端中的具体应用。我们都知道在Javascr...

我是如何使用ChatGPT和CoPilot作为编码助手的

...

Three主题评论按钮修改为滑动/拉链解锁后自动提交评论?

前阵子在逛张戈博客的时候,发现他的博客评论按钮挺好的,一来可以有效防止垃圾评论,二来减少一个评论提交步骤从而有效提高用户体验,所以我也把自己博客的评论按钮修改为滑动/拉链解锁后自动提交评论,今天就把折...

php进阶到架构之swoole系列教程(三)mysql连接池

目录概述学习目标mysql连接池应用场景连接池定义查看当前mysql连接数创建连接池代码示例...

PHP函数大全:从Array到Zip,你需要了解的所有函数

PHP函数大全:从Array到Zip,你需要了解的所有函数在PHP开发中,函数是非常重要的工具。它们提供了各种功能和操作,帮助我们更高效地处理数据和实现各种功能。在本文中,我们将介绍PHP中一些常用的...

PHP设计模式之组合模式(php常用的设计模式在开发中的实例)

组合模式属于结构型模式概述:将对象组合成树形结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。组合和聚合都描述一个类长期持有其他类的一个或多个实例的情况。聚合:...

信息安全学习4. 重放攻击的概念与防范

一、定义重放攻击(ReplayAttacks)又称为重播攻击、回放攻击,一般是攻击者截获数据包后,无法解密数据,但可以把数据包和业务间的关系进行猜测,重新发送相同数据包,来达到欺骗系统的目的,主要...

520最强PHP表白代码来了(php表白墙)

展示已有的表白信息(包含图片、姓名和表白内容)...

PHP8创建数组-PHP8知识详解(php怎么创建数据表)

在php8中,您可以使用以下方法创建数组:使用数组字面量创建数组、使用array()函数创建数组、通过赋值的方式创建数组、使用array_push()函数将元素添加到数组末尾、使用range()...

PHP 数组与数据结构(php数组操作)

两种常见的数据结构:栈与队列栈的基本特点:先进后出队列的基本特点:先进先出使用PHP数组模拟栈操作(入栈、出栈)array_push()将一个或多个单元压入数组的末尾(入栈),返回值为数组元素的个...