- 浏览: 1309723 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (732)
- Java_about (146)
- Spring_Hibernate_Struts_OpenSource (27)
- linux_unix (62)
- life_sth (22)
- js_css_html_xml_nodejs (69)
- design_pattens (1)
- Perl (8)
- php_ecshop (4)
- DB_Mysql_Oracle_Informix_SqlServer (43)
- JSTL (8)
- Testing_自动化测试 (42)
- DB_ID_UUID (4)
- SEM_SEO (1)
- english_study_improvement (4)
- SVN_Git (9)
- WebService_SOA_CloudComputing (3)
- E-Commerce (1)
- Lucene_Solr (7)
- others (2)
- Regex (2)
- tomcat_jetty (8)
- zeroc-ice (1)
- java_excel (5)
- ant_maven_gradle (5)
- Unity_VR_AR_C# (2)
- jmeter (1)
- XPath_dom4j (1)
- Ruby_and_Rails (68)
- write_a_rails (17)
- manage_and_team (1)
- getting_real (1)
- ubuntu (20)
- git_and_git_flow (7)
- TODO (1)
- PM_design (2)
- Python_and_Django (8)
- NoSql_mongo_redis (24)
- C/C++ (3)
- vi_vim_gvim (0)
- c#_.Net_windows编程_dll (10)
- Php_and_Yii (9)
- Android_IOS (31)
- Mysql (5)
- sa_运维_network_硬件 (37)
- lua (2)
- c_cpp_VisualStudio (21)
- 硬件-RM-Arduino (6)
最新评论
-
shenkun58:
...
NoClassDefFoundError: Could not initialize springframework.BeanCreationException -
liaojia1:
正解,感谢
NoClassDefFoundError: Could not initialize springframework.BeanCreationException -
flingfox63:
谢谢分享,电脑上有IPV6,导致了Guard启动不了……
ruby错误解决: Address family not supported by protocol - connect(2) -
c39274936:
s = "hello_world_ruby" ...
驼峰格式和下划线格式转换_translation between camel and snake format -
yfj300:
学习了学习了学习了学习了
硬盘基本知识(磁道、扇区、柱面、磁头数、簇、MBR、DBR)
MySQL5的日期类型有三种:DATETIME、DATE和TIMESTAMP,除了DATE用来表示一个不带时分秒的是日期,另外两个都带时分秒。TIMESTAMP还可以精确到毫秒。
其次还有个共性,就是他们的格式“不严格”,很自由,一般你认为对的格式都可以正确插入到数据库中。
这里主要解决带时分秒日期的一些常见问题。
一、IMESTAMP
1、TIMESTAMP列必须有默认值,默认值可以为“0000-00-00 00:00:00”,但不能为null。
2、TIMESTAMP列不可以设置值,只能由数据库自动去修改。
3、一个表可以存在多个TIMESTAMP列,但只有一个列会根据数据更新而改变为数据库系统当前值。因此,一个表中有多个TIMESTAMP列是没有意义,实际上一个表只设定一个TIMESTAMP列。
4、TIMESTAMP列的默认值是CURRENT_TIMESTAMP常量值。当纪录数据发生变化的时候,TIMESTAMP列会自动将其值设定为CURRENT_TIMESTAMP。
5、TIMESTAMP列创建后的格式是:
`a` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
这个语句含义,a字段的默认值是CURRENT_TIMESTAMP,当纪录更新时候,自动将a字段的值设置为CURRENT_TIMESTAMP。
6、另外,下面的定义从语法角度是对的,但是没有意义,因为该字段的值不可更改,永远只能为默认值。
`b` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
二、DATETIME
1、DATETIME列可以设置为多个,默认可为null,可以手动设置其值。
2、DATETIME列不可设定默认值,这是很多人煞费苦心研究的成果,呵呵!
3、DATETIME列可以变相的设定默认值,比如通过触发器、或者在插入数据时候,将DATETIME字段值设置为now(),这样可以做到了,尤其是后者,在程序开发中常常用到。
一般建表时候,创建时间用datetime,更新时间用timestamp。
CREATE TABLE user (
id bigint(20) NOT NULL AUTO_INCREMENT,
name varchar(20) CHARACTER SET gbk NOT NULL,
sex tinyint(1) DEFAULT '1',
state smallint(2) DEFAULT '1',
createtime datetime NOT NULL,
updatetime timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (id)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1
三、日期最大值范围的问题
日期最大范围的问题不是绝对的,很多人制定一个说不能查过20XX年,这是扯蛋,根本没这回事。日期的范围等问题与MySQL的运行模式有关。当然这个范围很宽广,足够祖宗十八代用了,不用担心这问题了。
相反,要注意的问题是,编程语言对日期范围的限制,不同的语言,有不同的限制,这里不做讨论了。
四、日期格式转换
1、字符串转日期
select STR_TO_DATE('2010-03-03 16:41:16', '%Y-%m-%d %H:%i:%s')
2、日期转字符串
select DATE_FORMAT('2010-03-03 16:41:16', '%Y-%m-%d %H:%i:%s')
五、日期的中年月日时分秒星期月份等获取方法
select TIMESTAMP('2010-03-03 16:41:16');
select DATE('2010-03-03 16:41:16');
select YEAR('2010-03-03 16:41:16');
select MONTH('2010-03-03 16:41:16');
select DAY('2010-03-03 16:41:16');
select TIME('2010-03-03 16:41:16');
select CURTIME();
select CURDATE();
select CURRENT_DATE;
select CURRENT_TIME;
select CURRENT_TIMESTAMP;
方式很多,这里简单列举一二。
六、日期的算术运算
相关的函数很多很多,用法也很简单,一看就会,建议查看MySQL参考手册。
mysql> SELECT DATE_ADD('1999-01-01', INTERVAL 1 DAY);
-> '1999-01-02'
mysql> SELECT DATE_ADD('1999-01-01', INTERVAL 1 HOUR);
-> '1999-01-01 01:00:00'
mysql> SELECT DATE_ADD('1998-01-30', INTERVAL 1 MONTH);
-> '1998-02-28'
七、日期的大小比较
拿着日当数字,拿着字符串当日期,呵呵,很简单的。
and update_time > '2010-03-02 16:48:41'
and update_time <= '2010-03-03 16:51:58'
搞明白这些,参考MySQL指南,日期问题轻松搞定。
发表评论
-
【Mysql】Windows下data文件迁移到别的磁盘,win10_win7开发机磁盘满了怎么办?
2022-01-04 17:21 218= = = 网上的处理办法是: 1备份数据。 ... -
【转】MySQL数据库之数据类型BOOL/BOOLEAN与TINYINT测试总结
2020-04-12 15:54 676= = = (一) 数据类型测试 (1). 布尔类型 ... -
IDEA连接mysql又报错!Server returns invalid timezone.
2020-04-08 11:10 407= 解决方法: 在sql ... -
mysql.sock作用-解决mysql.sock直接找不到了的问题-重新生成mysql.sock
2018-04-11 14:48 4897= = = mysql.sock作用-解决mysql. ... -
Mybatis之foreach批量insert返回主键id列表_Jdbc批量插入并返回主键id列表
2017-01-17 17:35 24312016/05/14 14:14 然而官方已经修复了 @a ... -
Mysql的wait_timeout解决-MySQL查看和修改wait_timeout
2015-07-23 19:45 6211mysql存在一项属性“wait_timeout”, ... -
Ubuntu_Mysql_移动数据存储位置_软连接失败_软连接var目录失败
2013-06-10 23:48 2191linux系统对权限的控制很好,但也成为各种问题的多 ... -
DB-Mysql-Can't connect to local MySQL server through socket '/var/run/mysqld/mys
2013-04-24 11:03 1621错误病症: Error: Can't connec ... -
(摘)DB_MySql_命令行_SQL结果_导出到文本_方法小结
2012-05-20 00:01 1490点评:第3个方法很好阿! 有时候需要把数据 ... -
MySQL_使用group_distinct后_如何得到总记录数(行数)
2012-03-22 19:48 2032MySQL_使用group_distinct ... -
MySQL_用一条SQL语句删除重复记录
2011-12-08 13:51 1654MySQL 一条SQL语句删除重复记录 不正确的 ... -
MySQL_导入导出工具mysqlimport用法详解
2011-09-30 17:00 2919MySQL_导入导出工具mys ... -
Mysql_mysqldump命令错误解决_
2011-09-30 16:16 1568Error|错误: mysqldump: Got er ... -
Mysql_不能用ip链接_能用localhost127.0.0.1链接_Ubuntu
2011-09-30 13:57 2927Mysql_不能用ip链接_能用localhost 和 ... -
Mysql_字符集设置
2011-09-20 22:48 1259Linux Ubuntu ubuntu上mys ... -
Mysql_字符串函数大全
2011-08-23 16:41 1093如果结果的长度大于服务器参数max_allowed ... -
数据库sql语句的exists总结
2011-08-11 18:53 3980数据库sql语句的exists总 ... -
查看memcache状态及缓存命中_持续整理中
2011-08-04 15:44 1916先占个位置: 之前是在使用网上有人用 ... -
Sql_拾疑_整理_搜集
2011-08-03 19:24 1167MYSQL是目前用的,如有变化,会说明。 #Union ... -
Mysql_AddOrUpdate_A better way to add or update MySQL rows
2011-03-03 13:11 1462有时候,这个东西能省略不少事情~ INSERT I ...
相关推荐
例如,Oracle的NUMBER可以对应MySQL的DECIMAL或FLOAT,DATE在MySQL中对应的是DATE类型,但Oracle的TIMESTAMP需要转换为MySQL的TIMESTAMP或DATETIME。 2. **DML语句转换**: INSERT、UPDATE和DELETE语句在两系统中...
日期类型包括 DATE、DATETIME、TIMESTAMP 等。 本文介绍了 MySQL 的基本概念、安装和配置、数据库和表的关系、创建数据库和表、备份和恢复数据库等知识点,为读者提供了一个系统的 MySQL 入门教程。
在 MySQL 中,日期时间数据类型主要有 `DATE`, `TIME`, `DATETIME`, 和 `TIMESTAMP`。每种类型都有其特定的存储范围和用途。例如,`DATETIME` 存储日期和时间,格式通常为 'YYYY-MM-DD HH:MM:SS'。当我们插入或查询...
日期/时间类型包括DATE、DATETIME、TIMESTAMP、TIME和YEAR,各有不同的存储长度和使用场景。DATE存储日期,DATETIME存储日期和时间,TIMESTAMP用于记录时间戳,TIME仅存时间,YEAR只需一个字节存储年份。 字符串...
此外,还有Blob和Text类型用于存储大二进制数据和大文本数据,以及日期和时间类型如date、time、datetime和timestamp。 创建数据库的SQL语句是`CREATE DATABASE [IF NOT EXISTS] db_name [CHARACTER SET utf8];`,...
在MySQL数据库中,datetime类型用于存储日期和时间的组合,格式通常为'YYYY-MM-DD HH:MM:SS'。然而,当从MySQL数据库检索datetime数据并传递给Java应用程序时,可能会遇到一个额外的'.0'尾随在时间戳之后,如'2015-...
日期和时间类型涵盖date、time、datetime、timestamp和year。字符串类型包括固定长度的char和可变长度的varchar,以及文本类型如text和blob。 【操作MySQL数据库】 要使用MySQL,需要先登录数据库,使用`mysql -u ...
- 日期和时间:`DATE`、`TIME`、`DATETIME`和`TIMESTAMP`。 - 逻辑值:`BIT`(0或1)。 字段约束有主键约束(`primary key`,确保非空且唯一)、自动增长(`auto_increment`,常用于ID字段)和非空及唯一约束(`NOT...
MySQL提供了多种数据类型,如数值类型(BIT、TINYINT、SMALLINT、INT、BIGINT、FLOAT、DOUBLE等)、字符串类型(VARCHAR、TEXT、BLOB)、日期和时间类型(DATE、TIME、DATETIME、TIMESTAMP)以及枚举和集合类型等。...
- MySQL的日期时间类型有date、time、datetime、timestamp和year,其中timestamp可以记录数据修改的时间。 - MS SQL Server的日期时间类型包括datetime、smalldatetime和timestamp,timestamp在这里实际上记录了...
7.2 用户变量 7.3 列类型 7.3.1 列类型的存储要求 7.3.5 数字类型 7.3.6 日期和时间类型 7.3.6.1 问题和日期类型 7.3.6.2 DATETIME,DATE和TIMESTAMP类型 7.3.6.3 TIME类型 7.3....
7.3.6.2 DATETIME,DATE和TIMESTAMP类型 7.3.6.3 TIME类型 7.3.6.4 YEAR类型 7.3.7 字符串类型 7.3.7.1 CHAR和VARCHAR类型 7.3.7.2 BLOB和TEXT类型 7.3.7.3 ENUM类型 7.3.7.4...
MySQL支持多种数据类型,包括时间日期类(DATE、DATETIME、TIME、TIMESTAMP、YEAR)、数值类(BIGINT、BIT、DECIMAL、FLOAT、INT、MEDIUMINT、SMALLINT、TINYINT)、字符串类(BINARY、BLOB、LONGBLOB、MEDIUMBLOB、...
# 7.3.6.2 DATETIME,DATE和TIMESTAMP类型 # 7.3.6.3 TIME类型 # 7.3.6.4 YEAR类型 + 7.3.7 字符串类型 # 7.3.7.1 CHAR和VARCHAR类型 # 7.3.7.2 BLOB和TEXT类型 # 7.3.7.3 ENUM类型 # 7.3.7.4 SET类型 + ...
这条语句将当前日期减去出生日期,计算出生日期到当前日期的天数,然后使用 `DATE_FORMAT` 函数将天数转换为年数。 2. 两个时间的差 计算两个 datetime 值之间的差别是非常常见的需求,例如,计算两个时间点之间的...
- 日期/时间类型:DATE、TIME、DATETIME、TIMESTAMP等。 7. 关系与键: - 主键:唯一标识一条记录,使用`PRIMARY KEY`约束。 - 外键:关联两个表的字段,使用`FOREIGN KEY`约束。 - 索引:提高查询速度,包括...
- `mysql_create_db()`, `mysql_drop_db()`, `mysql_fetch_object()`, `mysql_affected_rows()` 等其他函数用于更复杂的数据库操作。 这些知识点涵盖了MySQL数据库设计的基础,包括数据类型、属性、操作和PHP接口...
2. **数据类型**:MySQL支持多种数据类型,如整数类型(INT, TINYINT, SMALLINT等)、浮点数类型(FLOAT, DOUBLE)、字符串类型(VARCHAR, CHAR, TEXT)和日期时间类型(DATE, TIME, DATETIME, TIMESTAMP)等,理解...