无需转换的
创新互联凭借在网站建设、网站推广领域领先的技术能力和多年的行业经验,为客户提供超值的营销型网站建设服务,我们始终认为:好的营销型网站就是好的业务员。我们已成功为企业单位、个人等客户提供了成都做网站、成都网站制作、成都外贸网站建设服务,以良好的商业信誉,完善的服务及深厚的技术力量处于同行领先地位。
你可以使用常用的格式集中的任何一个指定 DATETIME、DATE 和 TIMESTAMP 值:
一个 'YYYY-MM-DD HH:MM:SS' 或 'YY-MM-DD HH:MM:SS' 格式的字符串。一个“宽松”的语法是被允许的:以任何标点符号作为日期部分和时间部分中的定界符。例如,'98-12-31 11:30:45'、'98.12.31 1+30+45'、'98/12/31 11*30*45' 和 '98@12@31 11^30^45' 均是等价的。
一个 'YYYY-MM-DD' 或 'YY-MM-DD' 格式的字符串。这里,一个“宽松”的语法同样也是被允许的:例如,'98.12.31'、'98-12-31'、'98/12/31' 和 '98@12@31' 是等价的。
一个无定界符的 'YYYYMMDDHHMMSS' 或 'YYMMDDHHMMSS' 格式的字符串,只要字符串看起来像是一个日期。例如,'19970523091528' 和 '970523091528' 均被解释为 '1997-05-23 09:15:28',但是 '971122129015' 却是违法的(它的分部分是无意义的),该值被插入时将变成 '0000-00-00 00:00:00'。
一个无定界符的 'YYYYMMDD' 或 'YYMMDD' 格式的字符串,只要字符串看起来像是一个日期。例如,'19970523' 和 '970523' 被解释成为 '1997-05-23',但是 '971332' 却是违法的(它的月和日部分是无意义的),该值被插入时将变成 '0000-00-00'。
一个 YYYYMMDDHHMMSS 或 YYMMDDHHMMSS 格式的数字,只要数字看起来像是一个日期。例如,19830905132800 和 830905132800 被解释成为 '1983-09-05 13:28:00'。
一个 YYYYMMDD 或 YYMMDD 格式的数字,只要数字看起来像是一个日期。例如,19830905 和 830905 被解释成为 '1983-09-05'。
在一个 DATETIME、DATE 或 TIMESTAMP 语境中,一个函数的返回值将随之而变化,例如 NOW() 或 CURRENT_DATE。
非法的 DATETIME、DATE 或 TIMESTAMP 值将会被转换到适当形式的“零”值('0000-00-00 00:00:00'、'0000-00-00' 或 00000000000000)。
时间戳转时间:
mysql select from_unixtime(1604730123);
+---------------------------+
| from_unixtime(1604730123) |
+---------------------------+
| 2020-11-07 14:22:03 |
+---------------------------+
1 row in set (0.02 sec)
时间戳格式化
mysql SELECT from_unixtime(1604730123, '%Y-%m-%d %H:%i:%S');
+------------------------------------------------+
| from_unixtime(1604730123, '%Y-%m-%d %H:%i:%S') |
+------------------------------------------------+
| 2020-11-07 14:22:03 |
+------------------------------------------------+
1 row in set (0.00 sec)
函数:FROM_UNIXTIME
作用:将MYSQL中以INT(11)存储的时间以"YYYY-MM-DD"格式来显示。
语法: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), 这里星期一是星期的第一天
%% 一个文字“%”。
方法/步骤
首先,在创建的数据库中新建一张数据库表t_amount_info,设置好字段名以及数据类型
如下图所示:
在点击“Apply”后,出现了SQL 语句错误
如下图所示:
查看MySQL Workbench日志可知,在设置id主键默认值时,出现错误
id INT NOT NULL DEFAULT ID
这里id是int数据类型,但是默认值给的是varchar,所以报错
修改完后,再次执行
如下图所示:
然后,再向该数据库表里插入数据
如下图所示:
点击“Apply”运行后,发现出现错误
如下图所示:
由报错日志可知,id是数据库表的主键,但是在插入的过程未给值,导致报错,修改后
如下图所示:
接着,查询t_amount_info表并格式化amount字段结果
如下图所示:
8
结果发现,出现错误,由报错日志可知
STR_TO_DATE(字符串,日期格式)
如下图所示:
1
我用的是SQLyog数据库客户端。通过from_unixtime把Long时间转换为日期格式。具体用法如下:select from_unixtime(1388776825);执行即可
2
还可以增加时间格式,用法如下:
SELECT FROM_UNIXTIME( 1388776825, '%Y%m%d' ) 结果:20140104SELECT FROM_UNIXTIME( 1388776825, '%Y年%m月%d' ) 结果:2014年1月4
3
如果想逆向转换,可以通过unix_timestamp()函数反向转换。用法如下:
SELECT UNIX_TIMESTAMP() ;//获取当前时间的秒数
SELECT UNIX_TIMESTAMP('2014-03-23 10:10:40') ; //获取指定日期格式的秒数
SELECT UNIX_TIMESTAMP('2014-03-23') ; //获取指定日期格式的秒数
如何在MySQL中把一个字符串转换成日期,分为以下两种情况:
1.
无需转化的
SELECT
*
FROM
表名 WHERE
date_sy'2016-12-01'
AND
date_sy'2016-12-05'
2.
使用DATE_FORMAT
SELECT
*
FROM
表名
WHERE
DATE_FORMAT(
date_sy,
'%Y-%m-%d')'2016-12-01'
AND
DATE_FORMAT(
date_sy,
'%Y-%m-%d')'2016-12-05'
mysql有丰富的时间函数:
ADDTIME (date2 ,time_interval ) //将time_interval加到date2
CONVERT_TZ (datetime2 ,fromTZ ,toTZ ) //转换时区
CURRENT_DATE ( ) //当前日期
CURRENT_TIME ( ) //当前时间
CURRENT_TIMESTAMP ( ) //当前时间戳
DATE (datetime ) //返回datetime的日期部分
DATE_ADD (date2 , INTERVAL d_value d_type ) //在date2中加上日期或时间
DATE_FORMAT (datetime ,FormatCodes ) //使用formatcodes格式显示datetime
DATE_SUB (date2 , INTERVAL d_value d_type ) //在date2上减去一个时间
DATEDIFF (date1 ,date2 ) //两个日期差
DAY (date ) //返回日期的天
DAYNAME (date ) //英文星期
DAYOFWEEK (date ) //星期(1-7) ,1为星期天
DAYOFYEAR (date ) //一年中的第几天
EXTRACT (interval_name FROM date ) //从date中提取日期的指定部分
MAKEDATE (year ,day ) //给出年及年中的第几天,生成日期串
MAKETIME (hour ,minute ,second ) //生成时间串
MONTHNAME (date ) //英文月份名
NOW ( ) //当前时间
SEC_TO_TIME (seconds ) //秒数转成时间
STR_TO_DATE (string ,format ) //字串转成时间,以format格式显示
TIMEDIFF (datetime1 ,datetime2 ) //两个时间差
TIME_TO_SEC (time ) //时间转秒数]
WEEK (date_time [,start_of_week ]) //第几周
YEAR (datetime ) //年份