数据库 Tips
时间和日期互转
数据库 | 当前时间 | 字符串转时间 | 时间转字符串 | 格式 | dual 表 |
---|---|---|---|---|---|
MySQL | NOW() |
STR_TO_DATE |
DATE_FORMAT |
%Y-%m-%d %H:%i:%s |
可选 |
Oracle | SYSTIMESTAMP 、SYSDATE |
TO_TIMESTAMP 、TO_DATE |
TO_CHAR |
YYYY-MM-DD HH24:MI:SS |
必须用 |
PostgreSQL | CURRENT_DATE 、CURRENT_TIME 、CURRENT_TIMESTAMP |
TO_DATE 、TO_TIMESTAMP |
TO_CHAR |
YYYY-MM-DD HH24:MI:SS |
不能用 |
MySQL
创建数据库并指定字符集
并不难,只不过用的比较多,记下来
CREATE DATABASE `test` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE DATABASE `test` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
时间和字符串互转
STR_TO_DATE
和DATE_FORMAT
,转换格式:%Y-%m-%d %H:%i:%s
Oracle
(+) 符号
这种是旧写法,oracle 已经不再推荐
详情可见https://stackoverflow.com/a/47008794/17746262
在 Oracle 中,(+)
表示 JOIN 中的“可选”表。
SELECT a.id, b.id, a.col_2, b.col_2, ...
FROM a,b
WHERE a.id=b.id(+)
现代写法就是:
SELECT a.id, b.id, a.col_2, b.col_2, ...
FROM a
LEFT JOIN b ON a.id=b.id
创建序列
-- 创建序列
create sequence seq_newsId
-- 删除序列
DROP SEQUENCE seq_newsId
PostgreSQL
判断时间重合
使用tsrange
函数:
select * from example
where tsrange(start_time, end_time, '()') && tsrange(start_time2, end_time2, '()')
解释:tsrange 可以把时间转换成时间段然后使用&&
判断是否重合,第三个参数代表边界范围,即开区间还是闭区间,可选(
和[
,
前者代表开区间,即不包含边界,后者代表闭区间,包含边界,第一个括号代表开始时间,第二个括号代表结束时间。
持续更新中……
标签:-%,数据库,id,DATE,tsrange,Tips,col From: https://www.cnblogs.com/code-blog/p/18040915