数据库中用来表示时间字段的类型有很多种,而且每种数据库中支持的格式可能也不尽一样
今天想请假大家一下各种数据库标准时间的转换问题(都转换成:2012-08-27 19:22:22)
(sqlserver sybase mysql access oracle)
比如不同数据库中的时间字段都为billdate
在sqlserver中时间的表示有下面几种类型
1 datetime(2012-08-27 19:22:22.333)
2 smalldatetime (2012-08-27 19:22:22)
3 varchar(2012-08-27 19:22:22)
4 varchar(2012/08/27 19:22:22)
5 varchar(20120827192222)
在sqlserver中可以使用Convert(datatime,billdate,20)来转换成2012-08-27 19:22:22格式
但是不支持像上面的第5种varchar(20120827192222)表示的格式
我有以下几个问题想求教一下大家
1.像varchar(20120827192222)这种格式怎么转换成2012-08-27 19:22:22格式?
2.这些数据库有没有一个统一支持的格式转换函数?
3.如果没有 那么他们每种数据库分别支持哪个转换函数呢?
此次只讨论调用系统提供的函数来转换,自己编写数据库函数不讨论。
( 热烈欢迎大家的回帖讨论)
今天想请假大家一下各种数据库标准时间的转换问题(都转换成:2012-08-27 19:22:22)
(sqlserver sybase mysql access oracle)
比如不同数据库中的时间字段都为billdate
在sqlserver中时间的表示有下面几种类型
1 datetime(2012-08-27 19:22:22.333)
2 smalldatetime (2012-08-27 19:22:22)
3 varchar(2012-08-27 19:22:22)
4 varchar(2012/08/27 19:22:22)
5 varchar(20120827192222)
在sqlserver中可以使用Convert(datatime,billdate,20)来转换成2012-08-27 19:22:22格式
但是不支持像上面的第5种varchar(20120827192222)表示的格式
我有以下几个问题想求教一下大家
1.像varchar(20120827192222)这种格式怎么转换成2012-08-27 19:22:22格式?
2.这些数据库有没有一个统一支持的格式转换函数?
3.如果没有 那么他们每种数据库分别支持哪个转换函数呢?
此次只讨论调用系统提供的函数来转换,自己编写数据库函数不讨论。
( 热烈欢迎大家的回帖讨论)
DECLARE @i VARCHAR(30)SET @i = '20120827192222'SELECT CONVERT(VARCHAR(10), CONVERT(DATETIME, LEFT(@i, 8), 120), 120) + ' '
+ SUBSTRING(@i, 9, 2) + ':' + SUBSTRING(@i, 11, 2) + ':' + RIGHT(@i, 2)--2012-08-27 19:22:22其它类型数据库应该也是差不多的。 参考
2.各个数据库的日期函数基本上都是自定义的,没有统一的日期转换。
3.MSSQL中
语句及查询结果:
Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM
Select CONVERT(varchar(100), GETDATE(), 1): 05/16/06
Select CONVERT(varchar(100), GETDATE(), 2): 06.05.16
Select CONVERT(varchar(100), GETDATE(), 3): 16/05/06
Select CONVERT(varchar(100), GETDATE(), 4): 16.05.06
Select CONVERT(varchar(100), GETDATE(), 5): 16-05-06
Select CONVERT(varchar(100), GETDATE(), 6): 16 05 06
Select CONVERT(varchar(100), GETDATE(), 7): 05 16, 06
Select CONVERT(varchar(100), GETDATE(), 8): 10:57:46
Select CONVERT(varchar(100), GETDATE(), 9): 05 16 2006 10:57:46:827AM
Select CONVERT(varchar(100), GETDATE(), 10): 05-16-06
Select CONVERT(varchar(100), GETDATE(), 11): 06/05/16
Select CONVERT(varchar(100), GETDATE(), 12): 060516
Select CONVERT(varchar(100), GETDATE(), 13): 16 05 2006 10:57:46:937
Select CONVERT(varchar(100), GETDATE(), 14): 10:57:46:967
Select CONVERT(varchar(100), GETDATE(), 20): 2006-05-16 10:57:47
Select CONVERT(varchar(100), GETDATE(), 21): 2006-05-16 10:57:47.157
Select CONVERT(varchar(100), GETDATE(), 22): 05/16/06 10:57:47 AM
Select CONVERT(varchar(100), GETDATE(), 23): 2006-05-16
Select CONVERT(varchar(100), GETDATE(), 24): 10:57:47
Select CONVERT(varchar(100), GETDATE(), 25): 2006-05-16 10:57:47.250
Select CONVERT(varchar(100), GETDATE(), 100): 05 16 2006 10:57AM
Select CONVERT(varchar(100), GETDATE(), 101): 05/16/2006
Select CONVERT(varchar(100), GETDATE(), 102): 2006.05.16
Select CONVERT(varchar(100), GETDATE(), 103): 16/05/2006
Select CONVERT(varchar(100), GETDATE(), 104): 16.05.2006
Select CONVERT(varchar(100), GETDATE(), 105): 16-05-2006
Select CONVERT(varchar(100), GETDATE(), 106): 16 05 2006
Select CONVERT(varchar(100), GETDATE(), 107): 05 16, 2006
Select CONVERT(varchar(100), GETDATE(), 108): 10:57:49
Select CONVERT(varchar(100), GETDATE(), 109): 05 16 2006 10:57:49:437AM
Select CONVERT(varchar(100), GETDATE(), 110): 05-16-2006
Select CONVERT(varchar(100), GETDATE(), 111): 2006/05/16
Select CONVERT(varchar(100), GETDATE(), 112): 20060516
Select CONVERT(varchar(100), GETDATE(), 113): 16 05 2006 10:57:49:513
Select CONVERT(varchar(100), GETDATE(), 114): 10:57:49:547
Select CONVERT(varchar(100), GETDATE(), 120): 2006-05-16 10:57:49
Select CONVERT(varchar(100), GETDATE(), 121): 2006-05-16 10:57:49.700
Select CONVERT(varchar(100), GETDATE(), 126): 2006-05-16T10:57:49.827
Select CONVERT(varchar(100), GETDATE(), 130): 18 ???? ?????? 1427 10:57:49:907AM
Select CONVERT(varchar(100), GETDATE(), 131): 18/04/1427 10:57:49:920AM
declare @date varchar(14)
set @date= '20120827192222'
select(left(@date,4)+'-'+substring(@date,5,2)+'-'+substring(@date,7,2)+' '+substring(@date,9,2)+':'+substring(@date,11,2)+':'+substring(@date,13,2))
---------------------------------------------------------------------------------
/*
-------------------------
2012-08-27 19:22:22
*/