SQL日期转换函数

SQLserver中用convert函数转换日期格式?
SQL Server中文版的默认的日期字段datetime格式是yyyy-mm-dd Thh:mm:ss.mmm?
例如:?
select getdate()?
2004-09-12 11:06:08.177?
整理了一下SQL Server里面可能经常会用到的日期格式转换方法:?
举例如下:?
select CONVERT(varchar, getdate(), 120 )?
2004-09-12 11:06:08?
select replace(replace(replace(CONVERT(varchar, getdate(), 120 ),'-',''),' ',''),':','')?
20040912110608?


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

常用:
Select

CONVERT(varchar(100), GETDATE(), 8): 10:57:46
Select CONVERT(varchar(100), GETDATE(), 24): 10:57:47
Select CONVERT(varchar(100), GETDATE(), 108): 10:57:49
Select CONVERT(varchar(100), GETDATE(), 12): 060516
Select CONVERT(varchar(100), GETDATE(), 23): 2006-05-16

存储过程中常用知识点:
循环
declare @i int
set @i=1
while @i<30
begin
insert into test (userid) values(@i)
set @i=@i+1
end

用变量代替表名的方法
declare @fld nvarchar(255)
declare @sql nvarchar(255)
select @fld = 'userName'
select @sql = 'select ' + @fld + ' from tbl'
exec sp_executesql @sql

===============================================================================================

指日期格式?
规则如下:?
1 101 美国 mm/dd/yyyy?
2 102 ANSI yy.mm.dd?
3 103 英国/法国 dd/mm/yy?
4 104 德国 dd.mm.yy?
5 105 意大利 dd-mm-yy?
6 106 - dd mon yy?
7 107 - mon dd, yy?
8 108 - hh:mm:ss?
- 9 或 109 (*) 默认值 + 毫秒 mon dd yyyy hh:mi:ss:mmmAM(或 PM)?
10 110 美国 mm-dd-yy?
11 111 日本 yy/mm/dd?
12 112 ISO yymmdd?
- 13 或 113 (*) 欧洲默认值 + 毫秒 dd mon yyyy hh:mm:ss:mmm(24h)?
14 114 - hh:mi:ss:mmm(24h)?
- 20 或 120 (*) ODBC 规范 yyyy-mm-dd hh:mm:ss[.fff]?
- 21 或 121 (*) ODBC 规范(带毫秒) yyyy-mm-dd hh:mm:ss[.fff]?
- 126(***) ISO8601 yyyy-mm-dd Thh:mm:ss:mmm(不含空格)?
- 130* 科威特 dd mon yyyy hh:mi:ss:mmmAM?
- 131* 科威特 dd/mm/yy hh:mi:ss:mmmAM?
关于Emaker中字段的格式转换和字段间的运算代码可以加到属性里的“格式转换(读出)”和“格式转换(写入)”,table字段设定里的“字段”位置也可以灵活加函数。比如:'AF'+ID 或者ID+'/'+PWD ,convert(varchar(50),F1) ,?
convert(int,%)-19110000 (读出)?
convert(char(8),convert(int,%)+19110000) (写入)?
实现行的合计运算等等。加入:%系统变量%,则是调用在Emaker 系统中设定的系统变量。?


1.DateAdd ( I , N , D )?
将一个日期加上一段期间后的日期。 I :设定一个日期( Date )所加上的一段期间的单位。譬如 interval="d" 表示 N的单位为日。 I的设定值如下:?
yyyy Year 年?
q Quarter 季?
m Month 月?
d Day 日?
w Weekday 星期?
h Hour 时?
n Minute 分?
s Second 秒?
N :数值表达式,设定一个日期所加上的一段期间,可为正值或负值,正值表示加(结果为 >date 以后的日期),负值表示减(结果为 >date 以前的日期)。?
D :待加减的日期。?
例子: DateAdd ( "m" , 1 , "31-Jan-98")?
结果: 28-Feb-98?
说明:将日期 31-Jan-98 加上一个月,结果为 28-Feb-98 而非 31-Fe-98 。?
例子: DateAdd ( "d" , 20 , "30-Jan-99")?
结果: 1999/2/9?
说明:将一个日期 30-Jan-99 加上 20 天后的日期。?
2.Day( 日期的字符串或表达式 )?
传回日期的「日」部份。?
例子: Day(" 12/1/1999 ")?
结果: 1?
3.DateDiff (I , D1 , D2[,FW[,FY]])?
计算两个日

期之间的期间。?
I :设定两个日期之间的期间计算之单位。譬如 >I="m" 表示计算的单位为月。 >I 的设定值如:?
yyyy > Year 年?
q Quarter 季?
m Month 月?
d Day 日?
w Weekday 星期?
h Hour 时?
n Minute 分?
s Second 秒?
D1 ,D2:计算期间的两个日期表达式,若 >date1 较早,则两个日期之间的期间结果为正值;若 >date2 较早, 则结果为负值。?
FW :设定每周第一天为星期几, 若未设定表示为星期天。 >FW 的设定值如下:?
0 使用 >API 的设定值。?
1 星期天?
2 星期一?
3 星期二?
4 星期三?
5 星期四?
6 星期五?
7 星期六?
FY :设定一年的第一周, 若未设定则表示一月一日那一周为一年的第一周。 >FY 的设定值如下:?
0 使用 >API 的设定值。?
1 一月一日那一周为一年的第一周?
2 至少包括四天的第一周为一年的第一周?
3 包括七天的第一周

相关主题
相关文档
最新文档