将MYSQL数据库里的时间戳转换成时间

将MYSQL数据库里的时间戳转换成时间,第1张

from_unixtime()是MySQL里的时间函数

select uid,userid,username,email,FROM_UNIXTIME(addtime,'%Y年%m月%d') from members

以上例子是sql语句的例子,直接能将mysql的时间戳类型转换成日期格式

date为需要处理的参数(该参数是Unix 时间戳),可以是字段名,也可以直接是Unix 时间戳字符串

后面的 '%Y%m%d' 主要是将返回值格式化 (这里的时间格式可以动态定义)

例如:

mysql>SELECT FROM_UNIXTIME( 1249488000, '%Y%m%d' )

->20071120

mysql>SELECT FROM_UNIXTIME( 1249488000, '%Y年%m月%d' )

->2007年11月20

UNIX_TIMESTAMP()是与之相对正好相反的时间函数,将日期时间转换为时间戳类型

UNIX_TIMESTAMP(), UNIX_TIMESTAMP(date)

若无参数调用,则返回一个 Unix timestamp ('1970-01-01 00:00:00' GMT 之后的秒数) 作为无符号整数。若用date 来调用 UNIX_TIMESTAMP(),它会将参数值以'1970-01-01 00:00:00' GMT后的秒数的形式返回。date 可以是一个 DATE 字符串、一个 DATETIME字符串、一个 TIMESTAMP或一个当地时间的YYMMDD 或YYYMMDD格式的数字。

例如:

mysql> SELECT UNIX_TIMESTAMP() ; (执行使得时间:2009-08-06 10:10:40)

->1249524739

mysql> SELECT UNIX_TIMESTAMP('2009-08-06') ;

->1249488000

使用 FROM_UNIXTIME函数,具体如下: FROM_UNIXTIME(unix_timestamp,format) 返回表示 Unix 时间标记的一个字符串,根据format字符串格式化。format可以包含与DATE_FORMAT()函数列出的条目同样的修饰符。 根据format字符串格式化date值。下列修饰符可以被用在format字符串中: %M 月名字(January……December) %W 星期名字(Sunday……Saturday) %D 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等。) %Y 年, 数字, 4 位 %y 年, 数字, 2 位 %a 缩写的星期名字(Sun……Sat) %d 月份中的天数, 数字(00……31) %e 月份中的天数, 数字(0……31) %m 月, 数字(01……12) %c 月, 数字(1……12) %b 缩写的月份名字(Jan……Dec) %j 一年中的天数(001……366) %H 小时(00……23) %k 小时(0……23) %h 小时(01……12) %I 小时(01……12) %l 小时(1……12) %i 分钟, 数字(00……59) %r 时间,12 小时(hh:mm:ss [AP]M) %T 时间,24 小时(hh:mm:ss) %S 秒(00……59) %s 秒(00……59) %p AM或PM %w 一个星期中的天数(0=Sunday ……6=Saturday ) %U 星期(0……52), 这里星期天是星期的第一天 %u 星期(0……52), 这里星期一是星期的第一天 %% 一个文字“%”。

timestamp:占用 4 字节,内部实现是新纪元时间(1970-01-01 00:00:00)以来的秒,那么这种格式在展示给用户的时候就需要做必要的时区转换才能得到正确数据。

在进行新纪元时间(1970-01-01 00:00:00)以来的秒到实际时间之间转换的时候 MySQL 根据参数 time_zone 的设置有两种选择:

time_zone 设置为 SYSTEM 的话:使用 sys_time_zone 获取的 OS 会话时区,同时使用 OS API 进行转换。对应转换函数 Time_zone_system::gmt_sec_to_TIME

time_zone 设置为实际的时区的话:比如 ‘+08:00’,那么使用使用 MySQL 自己的方法进行转换。对应转换函数 Time_zone_offset::gmt_sec_to_TIME

实际上 Time_zone_system 和 Time_zone_offset 均继承于 Time_zone 类,并且实现了 Time_zone 类的虚函数进行了重写,因此上层调用都是 Time_zone::gmt_sec_to_TIME。

注意这种转换 *** 作是每行符合条件的数据都需要转换的。

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

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

2Datetime类型:存储既有日期又有时间的数据。存储和显示的格式为 “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。

注释:MySQL41以前使用的TIMESTAMP格式在MySQL51中不支持;关于旧格式的信息参见MySQL41参考手册。

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数据库

在Configasp文件里定义:

IsSqlDataBase=1 '定义数据库类别,0为Aess数据库,1为SQL数据库

不知道你是哪个版本,在BBSxp 2008 SP2里Configasp文件在根目录下。内容如下:

<%

InstallIPAddress="127001" '安装BBSXP的IP地址,针对installasp的访问权限

TablePrefix="BBSXP_" '数据库表的前辍名(一般不用更改)

IsSqlDataBase=0 '定义数据库类别,0为Aess数据库,1为SQL数据库

If IsSqlDataBase=0 Then

'''''''''''''''''''''''''''''' Aess数据库设置 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''

SqlDataBase = "database/bbsxp2008mdb" '数据库路径

SqlProvider = "MicrosoftJetOLEDB40" '驱动程序[ MicrosoftJetOLEDB40 MicrosoftACEOLEDB120 ]

SqlPassword = "" 'ACCESS数据库密码

Connstr="Provider="&SqlProvider&";Jet Oledb:Database Password="&SqlPassword&"; Data Source="&ServerMapPath(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

'''''''''''''''''''''''''' 以下为专业人员设置选项,普通用户请勿修改 ''''''''''''''''''''''''''

SessionCodePage="936" '936(简体中文) 950(繁体中文) 65001(Unicode)

BBSxpCharset="GB2312" 'GB2312(简体中文) Big5(繁体中文) UTF-8(Unicode)

ResponseCharset=BBSxpCharset

ResponseBuffer=True

%>

注:

上面bbsxp7b1版本用的是Aess数据库,因为IsSqlDataBase=0

mysql数据库可以修改表的日期格式吗

日期型的字段 存储的格式是固定的不可以修改, 需要输出时 转换成需要的格式, 如果你不想输出时转换 那么需要 设为字符型的, 存储时转换 总之 不管先转还是后转 ,一定要转

每个数据库都有一个计数器,当对数据库中包含 timestamp 列的表执行插入或更新 *** 作时,该计数器值就会增加。 该计数器是数据库时间戳。 这可以跟踪数据库内的相对时间,而不是时钟相关联的实际时间。 一个表只能有一个 timestamp 列。 每次修改或插入包含 timestamp 列的行时,就会在 timestamp 列中插入增量数据库时间戳值。使用某一行中的 timestamp 列可以很容易地确定该行中的任何值自上次读取以后是否发生了更改。 如果对行进行了更改,就会更新该时间戳值。 如果没有对行进行更改,则该时间戳值将与以前读取该行时的时间戳值一致。

你如果是要返回数据库的当前时间戳值,可以使用 @@DBTS。

@@DBTS 返回当前数据库最后使用的时间戳值。 插入或更新包含 timestamp 列的行时,将产生一个新的时间戳值。

USE AdventureWorks;

GO

SELECT @@DBTS

-------------------------------------------------

这样是吗?

SELECT

CAST(GETDATE() AS timestamp) AS UsingCast,

CONVERT(timestamp, GETDATE(), 120) AS UsingConvert;

GO

这是取当前时间并转换成 timestamp

以上就是关于将MYSQL数据库里的时间戳转换成时间全部的内容,包括:将MYSQL数据库里的时间戳转换成时间、sql 中 timestamp 类型的时间 作为条件 如何进行查询、mysql数据库里的日期用timestamp还是datetime好等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/10201520.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存