当前位置:首页 » 运动资讯 » date可以存储时间和日期

date可以存储时间和日期

发布时间: 2023-05-16 03:59:34

① mysql中DATETIME,DATE和TIMESTAMP的区别

人家那里 拈 来的,希望能帮到你

DATETIME、DATE 和 TIMESTAMP 类型是相似的
本篇描述了它们的特性以及它们的相似点与不同点 :

DATETIME 类型可用于需要同时包含日期和时间信息的值。MySQL 以 'YYYY-MM-DD HH:MM:SS' 格式检索与显示
DATETIME 类型。支持的范围是 '1000-01-01 00:00:00' 到 '9999-12-31
23:59:59'。(“支持”的含义是,尽管更早的值可能工作,但不能保证他们均可以。)

DATE 类型可用于需要一个日期值而不需要时间部分时。MySQL 以 'YYYY-MM-DD' 格式检索与显示 DATE 值。支持的范围是 '1000-01-01' 到 '9999-12-31'。

TIMESTAMP 列类型提供了一种类型,通过它你可以以当前操作的日期和时间自动地标记 Insert 或Update 操作。如果一张表中有多个 TIMESTAMP 列,只有第一个被自动更新。
“完整”TIMESTAMP格式是14位,但TIMESTAMP列也可以用更短的显示尺寸创造
最常见的显示尺寸是6、8、12、和14。
你可以在创建表时指定一个任意的显示尺寸,但是定义列长为0或比14大均会被强制定义为列长14。
列长在从1~13范围的奇数值尺寸均被强制为下一个更大的偶数。
列如:
定义字段长度 强制字段长度
TIMESTAMP(0) -> TIMESTAMP(14)
TIMESTAMP(15)-> TIMESTAMP(14)
TIMESTAMP(1) -> TIMESTAMP(2)
TIMESTAMP(5) -> TIMESTAMP(6)
所有的TIMESTAMP列都有同样的存储大小,
使用被指定的时期时间值的完整精度(14位)存储合法的值不考虑显示尺寸。
不合法的日期,将会被强制为0存储
自动更新第一个 TIMESTAMP 列在下列任何条件下发生:
列值没有明确地在一个 Insert 或 LOAD DATA INFILE 语句中被指定。
列值没有明确地在一个 Update 语句中被指定,并且其它的一些列值已发生改变。(注意,当一个 Update 设置一个列值为它原有值时,这将不会引起 TIMESTAMP 列的更新,因为,如果你设置一个列值为它当前值时,MySQL 为了效率为忽略更新。)
明确地以 NULL 设置 TIMESTAMP 列。
第一个列以外其它 TIMESTAMP 列,可以设置到当前的日期和时间,只要将该列赋值 NULL 或 NOW()。
任何 TIMESTAMP 列均可以被设置一个不同于当前操作日期与时间的值,这通过为该列明确指定一个你所期望的值来实现旦哗。这也适用于第一个
TIMESTAMP 列。这个选择性是很有用的,举例来说,当你希望 TIMESTAMP
列保存该记录行被新添加时的当前的日期和时间,但该值不再发生改变,无论以后是否对该记录行进行过更新:
当该记录行被建立时,让 MySQL 设置该列值。这将初始化该列为当前日期和时间。
以后当你对该记录行的其它列执行更新时,为 TIMESTAMP 列值明确地指定为它原来的值。
另一方面,你可能发现更容易的方姿迟源法,使用 DATETIME 列,当新建记录行时以 NOW() 初始化该列,以后在对该记录行进行更新时不再处理它。
示例(译者注):
mysql> Create TABLE `tA` (
-> `id` int(3) unsigned NOT NULL auto_increment,
-> `date1` timestamp(14) NOT NULL,
-> `date2` timestamp(14) NOT NULL,
-> PRIMARY KEY (`id`)
-> ) TYPE=MyISAM;
Query OK, 0 rows affected (0.01 sec)
mysql> Insert INTO `tA` SET `id` = 1;
Query OK, 1 row affected (0.02 sec)
# 没有明确地指定第迹态一个 timestamp 列值,该列值被设为插入的当前时刻
# 没有明确地指定其它的 timestamp 列值,MySQL 则认为插入的是一个非法值,而该列值被设为0
mysql> Insert INTO `tA` S (2, NOW(), NULL);
Query OK, 1 row affected (0.01 sec)
mysql> Select * FROM `tA`;
+----+----------------+----------------+
| id | date1 | date2 |
+----+----------------+----------------+
| 1 | 20030503104118 | 00000000000000 |
| 2 | 20030503104254 | 20030503104254 |
+----+----------------+----------------+
2 rows in set (0.00 sec)
mysql> Update `tA` SET `id` = 3 Where `id` = 1;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0
# 对某一记录行进行了更新,第一个 timestamp 列值也将被更新
mysql> Update `tA` SET `id` = 2 Where `id` = 2;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1 Changed: 0 Warnings: 0
# MySQL 忽略了这次操作,第一个 timestamp 列值不会被更新
mysql> Select * FROM `tA`;
+----+----------------+----------------+
| id | date1 | date2 |
+----+----------------+----------------+
| 3 | 20030503104538 | 00000000000000 |
| 2 | 20030503104254 | 20030503104254 |
+----+----------------+----------------+
2 rows in set (0.00 sec)
mysql> Update `tA` SET `id` = 1,`date1`=`date1` Where `id` = 3;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
# 明确地指定了第一个 timestamp 列值为它原有值,该值将不会被更新
mysql> Select * FROM `tA`;
+----+----------------+----------------+
| id | date1 | date2 |
+----+----------------+----------------+
| 1 | 20030503104538 | 00000000000000 |
| 2 | 20030503104254 | 20030503104254 |
+----+----------------+----------------+
2 rows in set (0.00 sec)

② 定义一个日期类 Date,该类对象存放一个日期,可以提供的操作有: void GetDate( )

我给你加了不少合法性检查,使用默认构造函数构造时返回当前日期,你可以再main函数中多测试一下有没有问题,比如闰年二月月末增加一天,12月31号增加一天这些,我就只按照想法来写,没有完全测试过。代码:

Date.java:

import java.util.Arrays;
import java.util.Calendar;
import java.util.List;

public class Date {
private int y;
private int m;
private int d;
//定义小月smallM 后续经过判断控制,不在小月中的月份都是大月
private static List<Integer> smallM = Arrays.asList(4, 6, 9, 11);

public Date() {//默认构造函数,返回当前日期
Calendar calendar = Calendar.getInstance();
this.y = calendar.get(Calendar.YEAR);
this.m = calendar.get(Calendar.MONTH);
this.d = calendar.get(Calendar.DAY_OF_MONTH);
}

public Date(int y, int m, int d) throws Exception {
SetDate(y, m, d);
}

public Date(Date date) {
this.y = date.y;
this.m = date.m;
this.d = date.d;
}


void GetDate() {//取日期值,格式如“2012 年 2 月 5 日”
System.out.println(this.y + " 年 " + this.m + " 月 " + this.d + " 日");
}

int GetYear() {//取年份
return this.y;
}

int GetMonth() {//取月份
return this.m;
}

int GetDay() {//取日期
return this.d;
}

void SetDate(int y, int m, int d) throws Exception {//设置日期值
if (y < 0 || m < 0 || d < 0) {
throw new Exception("年、月、日均不能出现负数");
}
if (m > 12) {
throw new Exception("月份不能大于12月");
}
if (m == 2) {//二月特殊处理
if (y % 4 != 0 && d > 28) {
throw new Exception("平年二月不能大于28天");
} else if (y % 4 == 0 && d >猜正带 29) {
throw new Exception("闰年二月不能大于29天");
}
} else if (smallM.contains(m)) {//小月
if (d > 30) {
throw new Exception("小月天数不能大于30天");
}
} else {//剩余的都是大月
if (d > 31) {
throw new Exception("大月天数不能大于31天");
}
}
//所有不合法检查判断后,就可以赋值了
this.y = y;
this.m = m;
this.d = d;
}

void AddOneDay() {//日期增加一天
if (this.m == 2) {//还是先清携对2月进行特殊处理
if (this.y % 4 == 0) {//闰年
if (this.d == 29) {//闰穗芦年的2月29号增加一天为3月1号
this.m = 3;
this.d = 1;
return;
}
} else {
if (this.d == 28) {//平年的2月28号增加一天为3月1号
this.m = 3;
this.d = 1;
return;
}
}
} else if (smallM.contains(this.m)) {//小月的30号增加一天为下月1号
if (this.d == 30) {
this.m += 1;
this.d = 1;
return;
}
} else {//其他的都是大月
if (this.m == 12) {//12月份特殊处理
if (this.d == 31) {//12月31号增加一天为下一年的1月1号
this.y += 1;
this.m = 1;
this.d = 1;
return;
}
} else {
if (this.d == 31) {//大月的31号增加一天为下月1号
this.m += 1;
this.d = 1;
return;
}
}
}
//剩下的请款不是月末,号数直接加1即可
this.d += 1;
}
}

测试类:

public class T {
public static void main(String[] args) throws Exception {
Date d1 = new Date(2001, 5, 8);//用所给日期定义一个日期变量
Date d2 = new Date();//定义一个日期对象
Date d3 = new Date(d1);//用已有的日期构造一个新对象

d1.GetDate();
d2.GetDate();
d3.GetDate();

System.out.println(" 增加一天:");
d1.AddOneDay();
d2.AddOneDay();
d3.AddOneDay();

d1.GetDate();
d2.GetDate();
d3.GetDate();
}
}

运行结果:

③ java的类Date和Timestamp什么区别

1、主要是精链弯度问题,date没有ms,而timestamp是有ms的,所以date的精度要低于timestamp。
而且二者可以互相转换。
除此之外,没禅唤皮有什么不同,
再思考下吧贺差。

④ SQL 中 date 与datetime的区别

区别1:

①date类型可用于需要一个日期值而不需要时间部分时;

②datetime类型:可用于需要同时包含日期和时间信息的值。

区别2:

①date:MySQL 以 'YYYY-MM-DD' 格式检索与显示date值;

②datetime:MySQL 以 'YYYY-MM-DD HH:mm:ss'格式检索与显示 DATETIME 类型。

(4)date可以存储时间和日期扩展阅读:

SQL:

结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统, 可以使用相同的结构化查询语言作为数据输入与管理的接口。

结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。

1986年10月,美国国家标准协会对SQL进行规范后,以此作为关系式数据库管理系统的标准语言(ANSI X3. 135-1986),1987年得到国际标准组织的支持下成为国际标准。

不过各种通行的数据库系统在其实践过程中都对SQL规范作了某些编改和扩充。

所以,实际上不同数据库系统之间的SQL不能完全相互通用。

date:

(1)省略 年/月/日 显示系统日期并提示输入新的日期,不修改则可直接按回车键,要修改则直接输入新日期。

⑵当机器开始启动时,有自动处理文件培败(AUTOEXEC.BAT)被执行,则系统不提示输入系统日期。否则,提示输入新日期和时间。

DateTimePicker控件:

C/S设计中的DateTimePicker控件[1],有两种操作模式:

1.下拉式日历模式(缺省)—允许用户显示一种能够用来选择日期的下拉式日历。

2.时间格式模式—允许用户在日期显示中选择一个字段(配粗颤例凳掘如:月、日、年等等),按下控件右边的上下箭头来设置它的值。

可以自定义控件的下拉式日历的外观。

使用各种颜色属性,例如CalendarBackColor,CalendarForeColor,CalendarTitleBackColor,CalendarTitleForeColor和CalendarTrailingForeColor,允许创建属于您自己的颜色方案。

可以使用键盘或鼠标对控件进行浏览。下拉式日历有两个按钮使您能够滚动月份数据出入视图。

⑤ mysql 时间字段用什么类弄,长度是多少

mysql时间字段用:Date、Datetime和Timestamp。

(1)“皮岁Date”数据类型:用于存储没有时间的日期。 Mysql获取并显示此类型的格式为“ YYYY-MM-DD”,支持的时间长度范围是“ 1000-00-00”至“ 9999-12-31”。

(2)“Datetime”类型:存储日期和时间的数据。 存储和显示格式为“ YYYY-MM-DD HH:MM:SS”, 支持的时间长度范围是“ 1000-00-00 00:00:00”到“ 9999-12-31 23:59:59”。

(3)“Timestamp”类型:存储日期和时间的数据。 存储和显示格式与日期时间相同。 支持的时间长度范围是“ 1970-01-01 00:00:01”至“ 2038-01-19 03:14:07”。

所有不符合上述格式的数据都将转换为0值的相应类型。

(5)date可以存储时间和日期扩展阅读:

MySQL主要分为三种类型:字符串,日期和数字(每种类型实际上都有一个二进制类型,但并不常用)。

*字符串分为定长char和不定长度varchar,char以声明的长度为嫌链准,而varchar的长度与值的长度和字符集有关芹握孙。

*数字和日期均为固定长度的字段。 不同的类型具有不同的长度。 例如,Datetime是5.6.4之后的5个字节,之前的是8个字节; timestamp是4个字节,因为其存储整数,小数部分的长度通常与位数有关。

⑥ 数据库中日期型数据的长度是几个字节

MYSQL,datetime类型长度填8位。

日期型(DATETIME)数据是表示日期数据,用字母D表示。日期的默认格式是{mm/dd/yyyy},其中mm表示月分,dd表示日期,yyyy表示年度,固定长度为8位。日期范围为介于 100 到 9999 年的日期或时间数值。

(6)date可以存储时间和日期扩展阅读:

MySQL主要分为三种类型:字符串,日期和数字(每种类型实际上都有一个二进制类型,但并不常用)。

*字符串分为明卖定长char和不定长度varchar,char以声明的长度为准,而varchar的长度与值的长度和字符集有关。

*数字和日期均为固定长度镇掘的激旅逗字段。不同的类型具有不同的长度。例如,Datetime是5.6.4之后的5个字节,之前的是8个字节;timestamp是4个字节,因为其存储整数,小数部分的长度通常与位数有关。

⑦ 数据库datetime是什么类型

datetime类悉粗顷型:可用于需要同时包含日期和时间信息的值。

datetime:MySQL 以 'YYYY-MM-DD HH:mm:ss'格式检索与显示 DATETIME 类型。

DateTime 日期和时间部分,可以表示的日期范围从公元1753年1月1日00:00:00.000 到9999年12月31日23:59:59.997 ,精确到3.33毫秒,它需要8个字节的存储空间,其中前4个字节用于存储1900年1月1日以前或以后的天数,数值分正负,正数表示在此日期之后的日期,负数表示在此日期之前的日期;后4个字节用于存储从此日零时起所指定的时间经过的毫秒数。

(7)date可以存储时间和日期扩展阅读

在MySQL中创建表时,很容易通过类型介绍就能选择到合适自己的数据类型。不过到底是选择 datetime 还是 timestamp,凳灶可能会有点犯难。这两个日期时间类型各有优点:datetime 的日期范围比较大;timestamp 所占存储空间比较小,只是 datetime 的一半。

另外,timestamp 类型的列还有个特性:默认情况睁陆下,在 insert, update 数据时,timestamp 列会自动以当前时间(CURRENT_TIMESTAMP)填充/更新。“自动”的意思就是,你不去管它,MySQL 会替你去处理。

参考资料来源:网络-SQL数据类型

⑧ 中一般是怎么存放时间类型到数据库中的

中一般是怎么存放时间类型到数据库中的
Mysql中经常用来存储日期的数据类型有三好核扒种:Date、Datetime、Timestamp。

Date数据类型氏郑:用来存储没有时间的日期。Mysql获取和显示这个类型的格式为“YYYY-MM-DD”。支持的时间范围为“1000-00-00”到“9999-12-31”。

Datetime类型:存储既有日期又有时间的数据。存储和显示的格式为 “YYYY-MM-DD HH:MM:SS”。支持的时间范围是“1000-00-00 00:00:00”到“9999-12-31 23:59:59”。

Timestamp类型:也是存储既有日期又有时间的数据友昌。存储和显示的格式跟Datetime一样。支持的时间范围是“1970-01-01 00:00:01”到“2038-01-19 03:14:07”。

所有不符合上面所述格式的数据都会被转换为相应类型的0值。(0000-00-00或者0000-00-00 00:00:00)

⑨ 数据库中 日期的几种表示方法

Mysql中经常用来存储日期的数据类型有三种:Date、Datetime、Timestamp。

【1】Date数据类型:用来存储没有时间的日期。Mysql获取和显示这个类型的格式为“YYYY-MM-DD”。支雹尘持的时间范围为“1000-00-00”到“9999-12-31”。

【2】Datetime类型:存储既有日期又有时间的数据。存储和显示的格式为 “YYYY-MM-DD HH:MM:SS”。支持的时间范围是“1000-00-00 00:00:00”到“9999-12-31 23:59:59”。

【3】Timestamp类型:也是存储既有日期又有时间的数据。存储和显示的格式跟Datetime一样。支持的时间范围是“1970-01-01 00:00:01”到“2038-01-19 03:14:07”。

(9)date可以存储时间和日期扩展阅读

切记不要用字符串存储日期

这种存储日期的方式的优点还是有的,就是简单直白,容易上手。但是,这是不正确的做法,主要会有下面两个问题:

1、字符串占用的空间更大。

2、字符串存储的日期比较效率比较低(逐个字符进行比对),无法用日期相关的 API 进行计算和比较。

DateTime 类型没有时区信息的

DateTime 类型是没有时区信息的(时区无关),DateTime 类型保存的时间都是当前会话所设置的时区对应的时间。

当你的时区更换之后,比如你的服务器更换地址或者更换客户端连接时区设置的话,源厅禅就会导致你从数据库中读出的时间错误。不伏携要小看这个问题,很多系统就是因为这个问题闹出了很多笑话。

Timestamp 和时区有关。Timestamp 类型字段的值会随着服务器时区的变化而变化,自动换算成相应的时间,说简单点就是在不同时区,查询到同一个条记录此字段的值会不一样。