mysql日期函数

mysql获取7天前数据,日期比较

老子叫甜甜 提交于 2019-12-05 21:15:35
select * from news where n_date>unix_timestamp( subdate( now() , interval 7 day ))order by n_click desc N天内记录 WHERE TO_DAYS(NOW()) - TO_DAYS(时间字段) <= N 今天的记录 where date(时间字段)=date(now()) 或 where to_days(时间字段) = to_days(now()); 查询一周: select * from table where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(column_time); 查询一个月: select * from table where DATE_SUB(CURDATE(), INTERVAL INTERVAL 1 MONTH) <= date(column_time); ---------------------------end------------------------------------------- mysql中long时间的转换 http://blog.sina.com.cn/s/blog_4f925fc30102elfp.html 在开发中,有时候为方便将日期时间以long类型(秒钟)存在数据库

mysql TIMESTAMP(时间戳)详解

你。 提交于 2019-12-05 19:01:35
TIMESTAMP的变体 1,TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 在创建新记录和修改现有记录的时候都对这个数据列刷新 2,TIMESTAMP DEFAULT CURRENT_TIMESTAMP 在创建新记录的时候把这个 字段设置为当前时间,但以后修改时,不再刷新它 3,TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 在创建新记录的时候把这个字段设置为0, 以后修改时刷新它 4,TIMESTAMP DEFAULT ‘yyyy-mm-dd hh:mm:ss’ ON UPDATE CURRENT_TIMESTAMP 在创建新记录的时候把这个字段设置为给定值,以后修改时刷新它 MySQL目前不支持列的Default 为函数的形式,如达到你某列的默认值为当前更新日期 与时间的功能,你可以使用TIMESTAMP列类型下面就详细说明TIMESTAMP列类型 *TIMESTAMP列类型* TIMESTAMP值可以从1970的某时的开始一直到2037年,精度为一秒,其值作为数字显示。 TIMESTAMP值显示尺寸的格式如下表所示: : +---------------+----------------+ | 列类型    | 显示格式    | | TIMESTAMP(14) |

mysql 中怎么设置默认值为系统日期

99封情书 提交于 2019-12-05 19:00:54
-- 方法一: 由于MySQL目前字段的默认值不支持函数,所以以create_time datetime default now() 的形式设置默认值是不可能的。代替的方案是使用TIMESTAMP类型代替DATETIME类型。 TIMESTAMP列类型自动地用当前的日期和时间标记INSERT或UPDATE的操作。如果有多个TIMESTAMP列,只有第一个自动更新。 自动更新第一个TIMESTAMP列在下列任何条件下发生: 1.列值没有明确地在一个INSERT或LOAD DATA INFILE语句中指定。 2.列值没有明确地在一个UPDATE语句中指定且另外一些的列改变值。(注意一个UPDATE设置一个列为它已经有的值,这将不引起TIMESTAMP列被更新,因为如果你设置一个列为它当前的值,MySQL为了效率而忽略更改。) 3.你明确地设定TIMESTAMP列为NULL. 4.除第一个以外的TIMESTAMP列也可以设置到当前的日期和时间,只要将列设为NULL,或NOW()。 所以把日期类型 选择成timestamp 允许空就可以了 CREATE TABLE test ( uname varchar(50) NOT NULL, updatetime timestamp NULL DEFAULTCURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

EF Core For MySql查询中使用DateTime.Now作为查询条件的一个小问题

南笙酒味 提交于 2019-12-05 16:22:26
背景 最近一直忙于手上澳洲线上项目的整体迁移和升级的准备工作,导致博客和公众号停更。本周终于艰难的完成了任务,借此机会,总结一下项目中遇到的一些问题。 EF Core一直是我们团队中中小型项目常用的ORM框架,在使用SQL Server作为持久化仓储的场景一下,一直表现还中规中矩。但是在本次项目中,项目使用了MySql作为持久化仓储。为了与EF Core集成,团队使用了 Pomelo.EntityFrameworkCore.MySql 作为EF Core For MySql的扩展。在开发过程中,团队遇到了各种各样在SQL Server场景下没有遇到过的问题,其中最奇怪的,也是隐藏最深的问题,就是将 DateTime.Now 作为查询条件,产生了非预期的结果。 问题场景 本周在项目升级的过程中,客户反馈了一个问题。 在当前系统的Dashboard页面,有一个消息提醒功能,客户可以自定义一些消息,并且指定提醒的日期。客户遇到的问题是通常添加的消息提醒,在指定日期的上午时间段是不会显示,只有在下午时间段才能看到,比如说客户指定2019年10月26号看到一个的消息提醒,但是在10月26日这天早上8:00-12:00这个时间段,系统总是看不到提醒,只有到了下午的时间段才能看到提醒。 PS:这里客户表达的只是个笼统的问题,但问题确实是上午的大部分时间是看不到消息提醒的,但并不是精确到中午12

MySQL日期时间函数大全

僤鯓⒐⒋嵵緔 提交于 2019-12-05 14:46:00
DAYOFWEEK(date)  返回日期date是星期几(1=星期天,2=星期一,……7=星期六,ODBC标准) mysql> select DAYOFWEEK('1998-02-03');   -> 3 WEEKDAY(date)  返回日期date是星期几(0=星期一,1=星期二,……6= 星期天)。 mysql> select WEEKDAY('1997-10-04 22:23:00');   -> 5 mysql> select WEEKDAY('1997-11-05');   -> 2 DAYOFMONTH(date)  返回date是一月中的第几日(在1到31范围内) mysql> select DAYOFMONTH('1998-02-03');   -> 3 DAYOFYEAR(date)  返回date是一年中的第几日(在1到366范围内) mysql> select DAYOFYEAR('1998-02-03');   -> 34 MONTH(date)  返回date中的月份数值 mysql> select MONTH('1998-02-03');   -> 2 DAYNAME(date)  返回date是星期几(按英文名返回) mysql> select DAYNAME("1998-02-05");   -> 'Thursday' MONTHNAME

MySql学习笔记一

谁都会走 提交于 2019-12-05 12:26:11
MySql学习笔记一 1.SQL 分类 DDL(Data Definition Language)数据定义语言 DML(Data Manipulation Language)数据操作语言 DQL(Data Query Language)数据查询语言 DCL(Data Control Language)数据控制语言 TCL(Transaction Control Language)事务控制语言 2.常见指令 查看当前所有数据库: show databases 打开指定的库:use 库名 查看当前库的所有表:show tables 查看其它库的所有表:show tables from 库名 创建表:create table 表名( ​ 列名 列类型, ​ 列名 列类型, ​ ...... ); 查看表结构:DESC 表名 查看服务器版本: select version() || mysql --V 查看字符集: Show variables like '%char%' 查看当前用户:Select USER(); 3.DQL(数据查询语言) 3.1基础查询 select 查询列表 from 表名 查询列表可以是:表中字段、常量、表达式、函数 查询的结果是一个虚拟机的表格 3.1.1.常用关键字 3.1.1.1.起别名 as 或者 空格 例如 select 字段名 as a from 表名

Mysql 学习(一)

你离开我真会死。 提交于 2019-12-05 12:00:03
数据库软件: 开源软件: MYSQL 、 mongdb、 redis、mariadb 商业软件:oracle 、db2 、SQL Server(windows) 关系型数据型软件 mysql mariadb 要按照一定组织结构存储数据,并且数据和数据之间可以互相管理操作。 非关系型数据库软件(NoSQL)mongdb 、redis 、memcached key = 值 MySQL 的特点及应用: 主要特点:–适用于中小规模、关系型数据系统 —Linux/Unix、Windows等多种操作系统 —使用C和C++编写,可移植强 —通过API支持Python/Java/Perl/PHP等语言 典型应用环境:—LAMP平台、与Apache HTTP Server —LNMP平台、与Nginx组合 一 、下载mysql软件 下载网址 : https://dev.mysql.com/downloads/file/?id=485654 1、卸载系统自身带mariadb等软件 #yum -y remove mariadb #mv /etc/my.cnf /etc/my.cnf.old 将RHEL自带的mariadb-libs改名备份 (或者:#rpm -qa | grep -i mariadb #systemctl stop mariadb #rpm -e --nodeps mariadb

数据库MySQL之存储过程

帅比萌擦擦* 提交于 2019-12-05 07:29:27
存储过程的定义   存储过程是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象。其在思想上与面向对象编程中函数的定义与调用一致,存储过程只是SQL语言维度上的封装与运用。 存储过程的优缺点   优点:   1) 简化了存储调用者的步骤,降低了存储调用者的学习成本   2) 隐藏了存储过程的实际逻辑,易于商业内容的保密   3) 降低了sql调用方的程序复杂度   缺点:存储过程受限于数据库语言,移植性较差 存储过程的语法   1) 声明语句结束符:DELIMITER $$   注:语句结束符默认是 ; 声明语句结束符将其变成 $$,这样在过程体中的分号传递到服务器时,不会被客户端解释。   2) 声明存储过程:CREATE PROCEDURE demo_demrystv (IN param_in int)   3) 创建存储过程 create procedure 存储过程名( 参数 )   4) 声明存储过程的开始和结束:BEGIN...END   5) 变量赋值 SET @param_in = 33 存储过程的示例 在开发中,比如想要向数据库中循环插入日期,可以通过MySQL中的存储过程来实现。 DELIMITER $$ DROP PROCEDURE IF EXISTS create_date $$ CREATE PROCEDURE create_date (s

MySQL函数

心不动则不痛 提交于 2019-12-05 04:36:34
MySQL函数   MySQL数据库提供了很多函数包括: 数学函数; 字符串函数; 日期和时间函数; 条件判断函数; 系统信息函数; 加密函数; 格式化函数; 一、数学函数   数学函数主要用于处理数字,包括整型、浮点数等。 函数 作用 ABS(x) 返回x的绝对值   SELECT ABS(-1) -- 返回1 CEIL(x),CEILING(x) 返回大于或等于x的最小整数   SELECT CEIL(1.5) -- 返回2 FLOOR(x) 返回小于或等于x的最大整数   SELECT FLOOR(1.5) -- 返回1 RAND() 返回0->1的随机数   SELECT RAND() --0.93099315644334 RAND(x) 返回0->1的随机数,x值相同时返回的随机数相同   SELECT RAND(2) --1.5865798029924 SIGN(x) 返回x的符号,x是负数、0、正数分别返回-1、0和1   SELECT SIGN(-10) -- (-1) PI() 返回圆周率(3.141593)   SELECT PI() --3.141593 TRUNCATE(x,y) 返回数值x保留到小数点后y位的值(与ROUND最大的区别是不会进行四舍五入)   SELECT TRUNCATE(1.23456,3) -- 1.234 ROUND(x)

mysql时间类型和格式转换

此生再无相见时 提交于 2019-12-05 02:31:16
内容目录 简介 mysql时间类型 DATE_FORMAT()函数 简介 今天开发中,做一个功能需要对历史数据进行补充,相信大家也遇到过这样的情况,这个历史数据需要按月份和人的id进行区分,于是想到了mysql的时间格式化,这样直接写个sql脚本就不需要程序去执行了,在做到这一块时我个人对时间这一块没有详细了解过,所以借助这个机会整理一下mysql时间相关的内容,其实我这次主要用的是时间格式转换功能,脚本如下 1INSERT INTO `xxxx`.`xxxxx`(`years_month`, `receipt_user_id`, `receipt_freight_charge`, `receipt_other_charges`, `receipt_waiting_charge`, `receipt_insurance_premium`, `c_u`, `c_t`) 2SELECT DATE_FORMAT(c_t,'%y%m'), receipt_user_id, IFNULL(SUM(receipt_freight_charge), 0), IFNULL(SUM(receipt_other_charges), 0), 3IFNULL(SUM(receipt_waiting_charge), 0), IFNULL(SUM(receipt_insurance_premium), 0)