1、转换码
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 200610: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 200610: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 ???? ?????? 142710:57:49:907AM
Select
CONVERT
(
varchar
(100), GETDATE(), 131)
--18/04/142710:57:49:920AM
100 或者 0 mon dd yyyy hh:miAM (或者 PM) 101 mm/dd/yy 102 yy.mm.dd 103 dd/mm/yy 104 dd.mm.yy 105 dd-mm-yy 106 dd mon yy 107 Mon dd, yy 108 hh:mm:ss 109 或者 9 mon dd yyyy hh:mi:ss:mmmAM(或者 PM) 110 mm-dd-yy 111 yy/mm/dd 112 yymmdd 113 或者 13 dd mon yyyy hh:mm:ss:mmm(24h) 114 hh:mi:ss:mmm(24h) 120 或者 20 yyyy-mm-dd hh:mi:ss(24h) 121 或者 21 yyyy-mm-dd hh:mi:ss.mmm(24h) 126 yyyy-mm-ddThh:mm:ss.mmm(没有空格) 130 dd mon yyyy hh:mi:ss:mmmAM 131 dd/mm/yy hh:mi:ss:mmmAM2、mysql、oracle和sqlserver表示时间:
1)mysql数据库:
它们分别是 date、datetime、time、timestamp和year。
date :“yyyy-mm-dd”格式表示的日期值
time :“hh:mm:ss”格式表示的时间值
datetime: “yyyy-mm-dd hh:mm:ss”格式
timestamp: “yyyymmddhhmmss”格式表示的时间戳值
year: “yyyy”格式的年份值。
date :“1000-01-01”到“9999-12-31” 3字节
time :“-838:59:59”到“838:59:59” 3字节
datetime :“1000-01-01 00:00:00” 到“9999-12-31 23:59:59” 8字节
timestamp :19700101000000 到2037 年的某个时刻 4字节
year: 1901 到2155 1字节
2)oracle数据库:
Date类型的内部编码为12
长度:占用7个字节
数据存储的每一位到第七位分别为:世纪,年,月,日,时,分,秒
TIMESTAMP:是支持小数秒和时区的日期/时间类型。对秒的精确度更高
TIMESTAMP WITH TIME ZONE:类型是TIMESTAMP的子类型,增加了时区支持,占用13字节的存储空间,最后两位用于保存时区信息
INTERVAL :用于表示一段时间或一个时间间隔的方法.在前面有多次提过.INTERVAL有两种类型.
YEAR TO MONTH :能存储年或月指定的一个时间段.
DATE TO SECOND:存储天,小时,分钟,秒指定的时间段.
3)sql server:datetime和smalldatetime
datetime:数据类型所占用的存储空间为8个字节,其中前4个字节用于存储1900年1月1日以前或以后的天数,数值分正负,正数表示在此日期之后的日期,负数表示在此日期之前的日期;后4个字节用于存储从此日零时起所指定的时间经过的 毫秒数。
smalldatetime:数据类型使用4个字节存储数据。其中前2个字节存储从基础日期1900年1月1日以来的天数,后两个字节存储此日零时起所指定的时间经过的分钟数。
smalldatetime:数据类型与datetime数据类型相似,但其日期时间范围较小,从1900年1月1日到2079年6月6日。此数据类型精度较低,只能精确到分钟,其分钟个位为根据秒数四舍五入的值,即以30秒为界四舍五入。
3、运算
SQL Server Date 函数
下面的表格列出了 SQL Server 中最重要的内建日期函数:
函数 | 描述 |
---|---|
GETDATE() | 返回当前日期和时间 |
DATEPART() | 返回日期/时间的单独部分 |
DATEADD() | 在日期中添加或减去指定的时间间隔 |
DATEDIFF() | 返回两个日期之间的时间 |
CONVERT() | 用不同的格式显示日期/时间 |
DATEDIFF(datepart,startdate,enddate)
startdate 和 enddate 参数是合法的日期表达式。
datepart 参数可以是下列的值:
datepart | 缩写 |
---|---|
年 | yy, yyyy |
季度 | qq, q |
月 | mm, m |
年中的日 | dy, y |
日 | dd, d |
周 | wk, ww |
星期 | dw, w |
小时 | hh |
分钟 | mi, n |
秒 | ss, s |
毫秒 | ms |
微妙 | mcs |
纳秒 | ns |
s转hh:mm:ss
当小数部分被删除时,乘以毫秒。
SELECT DATEADD(ms, 121.25 * 1000, 0)
如果你想要没有日期部分,你可以使用CONVERT
SELECT CONVERT(varchar, DATEADD(ms, 121.25 * 1000, 0), 114)
如果你的时间超过24小时,则无法使用DATEADD和CONVERT方法正确处理。
SELECT CONVERT(varchar, DATEADD(ms, 24*60*60 * 1000, 0), 114)
00:00:00:000
以下功能将处理超过24小时(〜最大35,791,394小时)的时间。
create function [dbo].[ConvertTimeToHHMMSS]
(
@time decimal(28,3),
@unit varchar(20)
)
returns varchar(20)
as
begin
declare @seconds decimal(18,3), @minutes int, @hours int;
if(@unit = 'hour' or @unit = 'hh' )
set @seconds = @time * 60 * 60;
else if(@unit = 'minute' or @unit = 'mi' or @unit = 'n')
set @seconds = @time * 60;
else if(@unit = 'second' or @unit = 'ss' or @unit = 's')
set @seconds = @time;
else set @seconds = 0; -- unknown time units
set @hours = convert(int, @seconds /60 / 60);
set @minutes = convert(int, (@seconds / 60) - (@hours * 60 ));
set @seconds = @seconds % 60;
return
convert(varchar(9), convert(int, @hours)) + ':' +
right('00' + convert(varchar(2), convert(int, @minutes)), 2) + ':' +
right('00' + convert(varchar(6), @seconds), 6)
end
用法:
select dbo.ConvertTimeToHHMMSS(123, 's')
select dbo.ConvertTimeToHHMMSS(96.999, 'mi')
select dbo.ConvertTimeToHHMMSS(35791394.999, 'hh')
0:02:03.000
1:36:59.940
35791394:59:56.400
CONVERT(varchar, DATEADD(ms,abs(datediff(s,ifnull(convert(VARCHAR(50),RIGHT(FinalQueTime,8),108 ),
convert(VARCHAR(50),QueTime,108),convert(VARCHAR(50),RIGHT(FinalQueTime,8),108 )),
ifnull(convert(VARCHAR(50),QueStateTime,108),convert(VARCHAR(50),RIGHT(now(),8),108),convert(VARCHAR(50),QueStateTime,108))))* 1000, 0), 114) 等待时间
,convert(VARCHAR(50),QueStateTime,108)
,convert(VARCHAR(50),QueTime,108)
,convert(VARCHAR(50),RIGHT(FinalQueTime,8),108)
,convert(VARCHAR(50),RIGHT(now(),8),108)
,QueDate
*/