sql中 如何将201610转换为2016-10 即把6位数字转换为日期格式
平时为了方便存储和查询,通常会选择将时间存储为毫秒或者秒的形式。但是页面显示的时候很不直观,需要将整型数字转化成日期格式,转化方式包括下面几种:
1、秒数与Date之间的转换:select from_unixtime(1388776825);
还可以定义时间格式,用法如下:
SELECT FROM_UNIXTIME( 1388776825, '%Y-%m-%d %H:%m:%s');
结果:2014-01-04 03:01:25
SELECT FROM_UNIXTIME( 1388776825, '%Y年%m月%d' )
结果:2014年1月4
2、将秒数转为Date:SELECT UNIX_TIMESTAMP('2014-03-23 10:10:40')
如果想逆向转换,可以通过unix_timestamp()函数反向转换。用法如下:
SELECT UNIX_TIMESTAMP() ;//获取当前时间的秒数
SELECT UNIX_TIMESTAMP('2014-03-23 10:10:40') ; //获取指定日期格式的秒数
SELECT UNIX_TIMESTAMP('2014-03-23') ; //获取指定日期格式的秒数
扩展资料:
一、date型换int型
SELECT UNIX_TIMESTAMP(‘2017-9-22 13:54:45’)
二、int型转date型
SELECT FROM_UNIXTIME(1506059685)
需要注意的是,一个int值转换为DateTime 需要从1970年1月1日0点0分0秒开始,但是必须明确,这个时间是标准时间,而不是北京时间。
数据库中数据的时间都是以标准时间为准绳的。所以必须转换到当前时间, 中国是+8 ,可以简单的调用ToLocalTime达到效果。
你的问题涉及两个方面的知识:
一方面需要将数字转换为时间,这个就可以用sql的时间函数,一般用的也就只有四个:
(1)dateadd 在向指定日期加上一段时间的基础上,返回新的 datetime 值
(2)datediff 返回跨两个指定日期的具体返回格式的差值
(3)datepart 返回代表指定日期的指定日期部分的整数。
(4)datename 返回代表指定日期的指定日期部分的字符串
当然本例用dateadd再合适不过
另一方面就是我们常常需要将得到的日期结果转换成我们想要的格式,而日期函数中没有提供这样或那样我们想要的格式,那么我们就要用到convert函数了,基本上所有的转换格式的问题都可以用它来帮助我们解决。当然cast函数在一定程度上也可以做到,但并不像convert那样尽如人意。
以下是一般情况下我们会转换的几种可能,记住它们的特点对以后很有帮助。
http://blog.csdn.net/miyabaobeii/article/details/6714740
当然本例的问题在这也就可以得到很好的解决了:
以下提供两种解决方案:
1、select convert(varchar(100) , dateadd(ss, 5, 0), 108),
convert(varchar(100), dateadd(ss, 70, 0), 108),
convert(varchar(100), dateadd(ss, 3601, 0), 108)
go
2、select convert(varchar(100) , dateadd(ss, 5, 0), 24),
convert(varchar(100), dateadd(ss, 70, 0), 24),
convert(varchar(100), dateadd(ss, 3601, 0), 24)
go
如果细心的话就会发现,它们只是最后参数style(格式)不同而已,这也就是为什么convert要比cast好用的原因,从某种程度上它更好的支持了时间格式的相互转换。
你这也不叫日期格式,完整的日期格式是带年月日,或者年月日时分秒的,你这顶多算年份和月份之间加个横线
看具体什么数据库了,mysql如下:
select concat(substring(字段名,1,4),'-',substring(字段名,5,2)) from 表名
sqlserver如下:
select substring(字段名,1,4)+'-'+substring(字段名,5,2) from 表名
oracle如下:
select substr(字段名,1,4)||'-'||substr(字段名,5,2) from 表名
董货肛泰: 你这也不叫日期格式,完整的日期格式是带年月日,或者年月日时分秒的,你这顶多算年份和月份之间加个横线 看具体什么数据库了,mysql如下:1selectconcat(substring(字段名,1,4),'-',substring(字段名,5,2)) from表名 sqlserver如下: 1selectsubstring(字段名,1,4)+'-'+substring(字段名,5,2) from表名 oracle如下: 1selectsubstr(字段名,1,4)||'-'||substr(字段名,5,2) from表名
科尔沁左翼中旗17781998007: sqlserver中如何把数字转换成时间的格式. - ?
董货肛泰: 你的问7a686964616fe78988e69d8331333332623864题涉及两个方面的知识: 一方面需要将数字转换为时间,这个就可以用sql的时间函数,一般用的也就只有四个: (1)dateadd 在向指定日期加上一段时间的基础上,返回新的 datetime 值 ...
科尔沁左翼中旗17781998007: 在sql中如何将日期类型转换成文本类型,例如2012 - 09 - 12 转变成 20120912 - ?
董货肛泰: 日期与其它类型转换1 转换为数字 select cast(current_date as UNSIGNED integer);2 转换为字串-先格式化为自定义的排列然后使用concat或cas...
科尔沁左翼中旗17781998007: sqlserver中如何把数字转换成时间的格式??
董货肛泰: 把数字转换为时间,可以使用SQL的常用函数,常用的有下面四个函数,都给列了出来: (1)dateadd函数 作用是可以在向指定日期加上一段时间的基础上,返回新的 datetime 值; (2)datediff函数 返回跨两个指定日期的具体返回格式的差...
科尔沁左翼中旗17781998007: SQL中如何将数字型转换为日期型 - ?
董货肛泰: 不知道你什么数据库,给出sqlserver的 CREATE TABLE test(date VARCHAR(20)) INSERT INTO dbo.test ( date ) VALUES ( '20140123' -- date - varchar(20) ) SELECT DATEADD(mm,1,CAST(date AS DATETIME)) FROM test 结果: 2014-02-23 00:00:00.000
科尔沁左翼中旗17781998007: SQL里面如何把中文日期转换成英文日期 - ?
董货肛泰: 如果是日期格式字段的话修改session日期显示格式能完成 如果是不规整的字符串格式,用case when替换吧
科尔沁左翼中旗17781998007: SQL中如何将一个十进制数转换成16进制数,然后只显示16进制数的整数部分 - ?
董货肛泰: select replace(ltrim(replace(replace(( master.dbo.fn_varbintohexstr( cast( CONVERT(bigint, col1) as binary )) COLLATE Latin1_General_CI_AS_KS_WS ),0,' '),'x',' ')),' ','0') from table
科尔沁左翼中旗17781998007: sql 中如何将201501转换为20150101 - ?
董货肛泰: declare @date datetime set @date = '201501' + '01'
科尔沁左翼中旗17781998007: SQL语句中, 怎样把日期转为字符串??
董货肛泰: 依次取出字段的年月日时间分秒就组成了串 YYYY+MM+DD+HH+MS+SS 你有了这个串,就可以随意操作了,不同数据库中,获取这些时间戳的函数不一样,以Sybase为例,在Sybase中,该函数为: datepart(日期部分,日期) 取指定时间的...
科尔沁左翼中旗17781998007: SQL中怎么将字符串转 - ?
董货肛泰: 在SQL SERVER 2005中,将表中字符串转换为数字的函数共2个: 1. convert(int,字段名) 例如:select convert(int,'3') 2. cast(字段名 as int) 例如:select cast('3' as int) 其实,一般情况下没有必要把字符串转换为数字类型 假如需要比较两个字...