datetime库,数据库存储日期时间数据时,使用数据类型datetime和datetime2有什么区别
datetime库,数据库存储日期时间数据时,使用数据类型datetime和datetime2有什么区别详细介绍
本文目录一览: 数据库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个字节用于存储从此日零时起所指定的时间经过的毫秒数。
扩展资料
在MySQL中创建表时,很容易通过类型介绍就能选择到合适自己的数据类型。不过到底是选择 datetime 还是 timestamp,可能会有点犯难。这两个日期时间类型各有优点:datetime 的日期范围比较大;timestamp 所占存储空间比较小,只是 datetime 的一半。
另外,timestamp 类型的列还有个特性:默认情况下,在 insert, update 数据时,timestamp 列会自动以当前时间(CURRENT_TIMESTAMP)填充/更新。“自动”的意思就是,你不去管它,MySQL 会替你去处理。
参考资料来源:百度百科-SQL数据类型
数据库datetime是什么类型
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)
数据库存储日期时间数据时,使用数据类型datetime和datetime2有什么区别
Datetime:
时间格式,对应于数据库中的DateTime类型,对应于.NET里面的System.
DateTime类型。DateTime支持日期从1753年1月1日到9999年12月31日,时间部分的精确度是3.33毫秒,它需要8字节的存储空间。
Datetime2:
时间格式,就Sql
Server
2008
里面新增的字段类型。对应于数据库中的DateTime2格式,对应于.NET里面的System.
DateTime类型。DateTime2则支持从0001年01月01日到9999年12月31日,时间部分的精度是100纳秒,占用6到8字节的存储空间,取决于存储的精度。
datetime2数据类型,类似于之前的datetime类型,不过其精度比较高,可以精确到小数点后面7位(100ns)
函数库datetime中,什么是时间格式化最有效的方法
可以尝试下面的写法,格式控制较为灵活:
datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
对应输出:'2018-06-18 16:58:46'
解读:
datetime.datetime.now() :获取当前时间
%Y:年
%m:月
%d:日
%H:时
%M:分
%S:秒
python datetime库,如何对时间进行排序,付代码
import datetimelist=["2018-06-01 14:54:34","2018-06-01 14:55:02","2018-06-01 15:55:02","2018-06-01 14:55:01"]def get_list(date): return datetime.datetime.strptime(date,"%Y-%m-%d %H:%M:%S").timestamp()list=sorted(list,key=lambda date:get_list(date))print(list)运行结果:
datetime数据类型是什么?
是日期格式,如图。同时系统提供很多标准格式。因为,在不同的地区,不同的需要时,格式不同。所以不必自定义,选择一个就可可以了。
DATETIME类型是Date和Time的组合。支持的范围从'1000-01-01 00:00:00.000000' 到'9999-12-31 23:59:59.999999'。
MySQL以'YYYY-MM-DD hh:mm:ss[.fraction]'的格式显示DATETIME类型。但允许使用字符串或数字向DATETIME列赋值。字面常量转换规则如下:
表中的任何TIMESTAMP或DATETIME列都可以具有自动初始化和更新属性。
1、格式为“YYYY-MM-DD hh:mm:ss”或“YY-MM-DD hh:mm:ss”字符串。任何标点字符都可以用作日期部分或时间部分之间的分隔符。
2、在日期和时间部分和小数秒部分之间识别的唯一分隔符是小数点。
3、日期和时间部分可以用T而不是空格分隔。例如,'2012-12-31 11:30:45' '2012-12-31 t11:30:45 '是等价的。
4、格式为'YYYYMMDDhhmmss'或'YYMMDDhhmmss'无分隔符的字符串,只要该字符串具有日期的意义。例如,'20070523091528'和'070523091528'被解释为'2007-05-23 09:15:28',但'071122129015'是非法的(它有一个无意义的分钟部分),会变成'0000-00-00 00:00:00'。
5、YYYYMMDDhhmmss或YYMMDDhhmmss格式的数字,只要该数字作为日期有意义。例如,13800800和830905132800被解释为“1983-09-05 13:28:00”。
datetime mysql 格式化的方法是:
要插入当前日期(而不是时间),则可以使用CURDATE()MySQL的内置函数。语法是INSERT INTO yourTableName values(curdate())。
或者,如果您想同时添加日期和时间,则可以使用NOW()MySQL的内置函数。语法是INSERT INTO yourTableName values(now())。
为了理解这两种语法,让我们首先创建一个表。创建表的查询如下mysql> create table NowAndCurdateDemo.
?> (。
?> YourDueDate datetime。
?> )。
实现这两个功能以插入当前日期和日期时间表。查询插入日期如下mysql> insert into NowAndCurdateDemo values(curdate())。
mysql> insert into NowAndCurdateDemo values(now())。
Mysql中的DATE和DATETIME有什么区别?
今天做数据库详细设计时,发现许多字段有的是date类型,有的是datetime类型,不知为什么会有两种时间类型,跟Oracle很不同,时间紧就没直接查,晚上忙完工作,查了一下,真有细致的区别,记下来吧!
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()
初始化该列,以后在对该记录行进行更新时不再处理它。
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'。
1、显示格式的区别
Date显示格式:YYYY-MM-DD;DateTime显示格式:YYYY-MM-DD HH:mm:ss。
2、显示范围的区别
Date显示范围是1601-01-01 到 9999-01-01;DateTime显示范围是1601-01-01 00:00:00 到 9999-12-31 23:59:59。
3、应用场景的区别
当业务需求中只需要精确到天时,可以用Date这个时间格式,当业务需求中需要精确到秒时,可以用DateTime这个时间格式。
4、后台取值的区别
Date后台取值:@JSONField(format=”yyyy-MM-dd”);DateTime后台取值:@JSONField(format=”yyyy-MM-dd HH:mm:ss:SSS”)(这里只会精确到秒)。
参考资料:百度百科:MySQL函数
如何更新mysql数据库中datetime类型的字段
更新mysql数据库中datetime类型的字段:
举例如下:
UPDATE calldata
SET date = DATE_SUB(date, INTERVAL 7 DAY)
WHERE date >= '2014-01-08'
AND date < '2014-01-09
这个sql语句中,date 是datetime类型的
-- 比如datetime字段为:sjupdate 表名 set sj = now() where 条件; //now()是当前本地年月日时分秒update 表名 set sj = '2014-10-10 12:00:00' where 条件;
mysql数据库里的日期用timestamp还是datetime好
mysql数据库里的日期用timestamp还是datetime好 (1)4个字节储存
(2)值以UTC格式保存
(3)时区转化 ,存储时对当前的时区进行转换,检索时再转换回当前的时区。
(4)TIMESTAMP值不能早于1970或晚于2037!
timestamp在数据库里实际记载的时间是国际标准时间,同一个timestamp值在不同的时区检索出来的日期时间是不一样的,因为系统会根据时区的不同进行自动时区转换,而datetime则不会进行转换时区转换,存储时是什么日期时间,检索出来的就是存入时的日期时间,它不会有变化。至于这两种日期时间类型哪种好是没有定论的,要根据实际情况和应用需求做出取舍。
请注意由于无需实施时区转换,系统处理dateime所产生的系统开销要比timestamp小。
没什么好不好的,方便省事才是王道。都用datetime 你说呢,谁在乎那点存储
类型
类型 存储需求 格式 时间范围
datetime 8个字节 yyyy-mm-dd hh-mm-ss 1000-01-01 00:00:00 到9999-12-31 23:59:59 timestamp 4个字节 yyyy-mm-dd hh-mm-ss 1970-01-01 00:00:00 到2037-12-31 23:59:59
timestamp类型会有时区变量的影响,跨时区使用时应注意
datetime 8个字节 yyyy-mm-dd hh-mm-ss 1000-01-01 00:00:00 到9999-12-31 23:59:59
timestamp 4个字节 yyyy-mm-dd hh-mm-ss 1970-01-01 00:00:00 到2037-12-31 23:59:59
timestamp类型会有时区变量的影响,跨时区使用时应注意
没什么好不好的,方便省事才是王道。都用datetime 你说呢,谁在乎那点存储 类型 类型 存储需求 格式 时间范围 datetime 8个字节
Mysql中经常用来存储日期的数据类型有2种:Date、Datetime.
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”。
TIMESTAMP列用于INSERT或UPDATE操作时记录日期和时间。如果你不分配一个值,表中的第一个TIMESTAMP列自动设置为最近操作的日期和时间。也可以通过分配一个NULL值,将TIMESTAMP列设置为当前的日期和时间。
TIMESTAMP值返回后显示为'YYYY-MM-DDHH:MM:SS'格式的字符串,显示宽度固定为19个字符。如果想要获得数字值,应在TIMESTAMP列添加+0。
注释:MySQL4.1以前使用的TIMESTAMP格式在MySQL5.1中不支持;关于旧格式的信息参见MySQL4.1参考手册。
datetime
1. 占用8个字节
2. 允许为空值,可以自定义值,系统不会自动修改其值。
3. 实际格式储存(Just stores what you have stored and retrieves the same thing which you have stored.)
4. 与时区无关(It has nothing to deal with the TIMEZONE and Conversion.)
5. 不可以设定默认值,所以在不允许为空值的情况下,必须手动指定datetime字段的值才可以成功插入数据。
6. 可以在指定datetime字段的值的时候使用now()变量来自动插入系统的当前时间。
结论:datetime类型适合用来记录数据的原始的创建时间,因为无论你怎么更改记录中其他字段的值,datetime字段的值都不会改变,除非你手动更改它。
timestamp
1. 占用4个字节
2. 允许为空值,但是不可以自定义值,所以为空值时没有任何意义。
3. TIMESTAMP值不能早于1970或晚于2037。这说明一个日期,例如'1968-01-01',虽然对于DATETIME或DATE值是有效的,但对于TIMESTAMP值却无效,如果分配给这样一个对象将被转换为0。
4.值以UTC格式保存( it stores the number of milliseconds)
5.时区转化 ,存储时对当前的时区进行转换,检索时再转换回当前的时区。
6. 默认值为CURRENT_TIMESTAMP(),其实也就是当前的系统时间。
7. 数据库会自动修改其值,所以在插入记录时不需要指定timestamp字段的名称和timestamp字段的值,你只需要在设计表的时候添加一个timestamp字段即可,插入后该字段的值会自动变为当前系统时间。
8. 以后任何时间修改表中的记录时,对应记录的timestamp值会自动被更新为当前的系统时间。
结论:timestamp类型适合用来记录数据的最后修改时间,因为只要你更改了记录中其他字段的值,timestamp字段的值都会被自动更新。
看完这个比较你就知道用哪个好啦
我们公司一般用datatime,可控性比较强
jdbc查询Mysql数据库的日期问题
你没说错!
查出来可以保存为String类型 具体转化一下就OK了
BBSXP 用的MYSQL数据库还是MSSQL数据库
BBSXP同时支持Aess数据库和MSSQL数据库
在Config.asp文件里定义:
IsSqlDataBase=1 '定义数据库类别,0为Aess数据库,1为SQL数据库
不知道你是哪个版本,在BBSxp 2008 SP2里Config.asp文件在根目录下。内容如下:
<%
InstallIPAddress="127.0.0.1" '安装BBSXP的IP地址,针对install.asp的访问权限
TablePrefix="BBSXP_" '数据库表的前辍名(一般不用更改)
IsSqlDataBase=0 '定义数据库类别,0为Aess数据库,1为SQL数据库
If IsSqlDataBase=0 Then
'''''''''''''''''''''''''''''' Aess数据库设置 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''
SqlDataBase = "database/bbsxp2008.mdb" '数据库路径
SqlProvider = "Microsoft.Jet.OLEDB.4.0" '驱动程序[ Microsoft.Jet.OLEDB.4.0 Microsoft.ACE.OLEDB.12.0 ]
SqlPassword = "" 'ACCESS数据库密码
Connstr="Provider="&SqlProvider&";Jet Oledb:Database Password="&SqlPassword&"; Data Source="&Server.MapPath(SqlDataBase)
SqlNowString="Now()"
SqlChar="'"
IsSqlVer="ACCESS"
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Else
'''''''''''''''''''''''''''''' SQL数据库设置 ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
SqlLocalName = "(local)" '连接IP [ 本地用 (local) 外地用IP ]
SqlUserName = "sa" 'SQL用户名
SqlPassword = "1234" 'SQL用户密码
SqlDataBase = "bbsxp" '数据库名
SqlProvider = "SQLOLEDB" '驱动程序 [ SQLOLEDB SQLNCLI ]
ConnStr="Provider="&SqlProvider&"; User ID="&SqlUserName&"; Password="&SqlPassword&"; Initial CataLog="&SqlDataBase&"; Data Source="&SqlLocalName&";"
SqlNowString="GetDate()"
IsSqlVer="MSSQL"
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
End If
'''''''''''''''''''''''''' 以下为专业人员设置选项,普通用户请勿修改 ''''''''''''''''''''''''''
Session.CodePage="936" '936(简体中文) 950(繁体中文) 65001(Unicode)
BBSxpCharset="GB2312" 'GB2312(简体中文) Big5(繁体中文) UTF-8(Unicode)
Response.Charset=BBSxpCharset
Response.Buffer=True
%>
注:
上面bbsxp7b1版本用的是Aess数据库,因为IsSqlDataBase=0
mysql数据库可以修改表的日期格式吗
日期型的字段 存储的格式是固定的不可以修改, 需要输出时 转换成需要的格式, 如果你不想输出时转换 那么需要 设为字符型的, 存储时转换. 总之 不管先转还是后转 ,一定要转
java如何获取数据库中datetime类型数据
用Date类型。。如果你是hibernate自动生成的话。。注意。那就得改映射类型了,因为他会自动转为sql.datatiem的。。
如果直接取。没有映射。那就用Date吧~
也可以考虑用String 类型接收。与java中对应的是Date 类型
和获取其他数据一样方式获取 不过接受的数据类型是Date()
Date 类型可以,String 类型也行,根据你的理解选择
java.util.Date date;
Timestamp timestamp = resultSet.getTimestamp(i);
if (timestamp != null)
date = new java.util.Date(timestamp.getTime()));
解释一下:首先从结果集中拿到timestamp,然后作为参数传入date中,就变成java.util.Date类型
然后转成你想要的格式就ok了,一般用
DateFormat df=new SimpleDateFormat(format);
String result=df.format(date );