convert日期转换格式为20或120时,得到的字符串是不带毫秒的。
如 select CONVERT(VARCHAR(23),getdate(),120或20)
2003-01-07 21:46:43

日期转换格式为21或121时,得到的字符串是带毫秒的
select CONVERT(VARCHAR(23),getdate(),121或21)
2003-01-07 21:47:34.360

日本标准
日期转换格式为111时,得到的字符串是yyyy/mm/dd
select CONVERT(VARCHAR(23),getdate(),111)
2003/01/07

具体参见convert help

不带世纪数位 (yy) 带世纪数位 (yyyy) 标准 输入/输出**
- 0 或 100 (*) 默认值 mon dd yyyy hh:miAM(或 PM)
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

SQL Server各种日期计算方法之二  上个月的最后一天
  
  这是一个计算上个月最后一天的例子。它通过从一个月的最后一天这个例子上减去3毫秒来获得。有一点要记住,在Sql Server中时间是精确到3毫秒。这就是为什么我需要减去3毫秒来获得我要的日期和时间。
  
  SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0))
  
  计算出来的日期的时间部分包含了一个Sql Server可以记录的一天的最后时刻(“23:59:59:997”)的时间。
  
  去年的最后一天
  
  连接上面的例子,为了要得到去年的最后一天,你需要在今年的第一天上减去3毫秒。
  
  SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0))
  
  本月的最后一天
  
  现在,为了获得本月的最后一天,我需要稍微修改一下获得上个月的最后一天的语句。修改需要给用DATEDIFF比较当前日期和“1900-01-01” 返回的时间间隔上加1。通过加1个月,我计算出下个月的第一天,然后减去3毫秒,这样就计算出了这个月的最后一天。这是计算本月最后一天的SQL脚本。
  
  SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))
  
  本年的最后一天
  
  你现在应该掌握这个的做法,这是计算本年最后一天脚本
  
  SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0))。
  
  本月的第一个星期一
  
  好了,现在是最后一个例子。这里我要计算这个月的第一个星期一。这是计算的脚本。
  
 select DATEADD(wk, DATEDIFF(wk,0,
  dateadd(dd,6-datepart(day,getdate()),getdate())
  ), 0) 
  
  在这个例子里,我使用了“本周的星期一”的脚本,并作了一点点修改。修改的部分是把原来脚本中“getdate()”部分替换成计算本月的第6天,在计算中用本月的第6天来替换当前日期使得计算可以获得这个月的第一个星期一。
  
  总结
  
  我希望这些例子可以在你用DATEADD和DATEDIFF函数计算日期时给你一点启发。通过使用这个计算日期的时间间隔的数学方法,我发现为了显示两个日期之间间隔的有用历法是有价值的。注意,这只是计算出这些日期的一种方法。要牢记,还有很多方法可以得到相同的计算结果。假如你有其他的方法,那很不错,要是你没有,我希望这些例子可以给你一些启发,当你要用DATEADD和DATEDIFF函数计算你程序可能要用到的日期时。

  附录:其他日期处理方法
  
  1)去掉时分秒

 declare @ datetime
  set @ = getdate() --'2003-7-1 10:00:00'
  SELECT @,DATEADD(day, DATEDIFF(day,0,@), 0)

 
  2)显示星期几

select datename(weekday,getdate()) 
  3)如何取得某个月的天数

  declare @m int
  set @m=2 --月份
  select datediff(day,'2003-'+cast(@m as varchar)+'-15' ,'2003-'+cast(@m+1 as varchar)+'-15')
  另外,取得本月天数
  select datediff(day,cast(month(GetDate()) as varchar)+'-'+cast(month(GetDate()) as varchar)+'-15' ,cast(month(GetDate()) as varchar)+'-'+cast(month(GetDate())+1 as varchar)+'-15')
  或者使用计算本月的最后一天的脚本,然后用DAY函数区最后一天
  SELECT Day(dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))) 
  4)判断是否闰年:

  SELECT case day(dateadd(mm, 2, dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)))) when 28 then '平年' else '闰年' end
  或者
  select case datediff(day,datename(year,getdate())+'-02-01',dateadd(mm,1,datename(year,getdate())+'-02-01'))
  when 28 then '平年' else '闰年' end

  
  5)一个季度多少天
 

  declare @m tinyint,@time smalldatetime
  select @m=month(getdate())
  select @m=case when @m between 1 and 3 then 1
  when @m between 4 and 6 then 4
  when @m between 7 and 9 then 7
  else 10 end
  select @time=datename(year,getdate())+'-'+convert(varchar(10),@m)+'-01'
  select datediff(day,@time,dateadd(mm,3,@time))

转载于:https://www.cnblogs.com/zcttxs/archive/2012/04/14/2447142.html

SQL一些时间格式的转换相关推荐

  1. SQL日期时间格式自由转换大全

    日期数据格式的处理,两个示例: CONVERT(varchar(16), 时间一, 20) 结果:2007-02-01 08:02/*时间一般为getdate()函数或数据表里的字段*/ CONVER ...

  2. SQL Server日期格式的转换

    SQL Server日期格式的转换 [原创 2007-03-23 09:34:36]     字号: 大 中 小 SQL Server中文版的默认的日期字段datetime格式是yyyy-mm-dd ...

  3. js 各种时间格式的转换

    js 各种时间格式的转换 时间格式 示例 中国标准时间 Fri Mar 18 2022 14:24:45 GMT+0800(中国标准时间) 部分可读字符串 Fri Mar 18 2022 格林威治时间 ...

  4. python中时间格式的转换(time模块)

    1.Unix时间戳 Unix时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数.例如:xxxxxxxx.xxxxx,单位 ...

  5. SQL Server数据库中Date/Time 时间格式的转换[转]

    格式转换sql函数convert(nvarchar(12),@date,111): 第一个参数代表要截取的长度,第二个参数代表数据库的字段,最后一个参数代表要截取的日期时间格式,如下表所示: DATE ...

  6. SQL Server 时间戳与时间格式互相转换

    时间戳(Unix timestamp) 是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数. Unix时间戳不仅被使用在Unix系统.类Unix系统中,也 ...

  7. 【整理】OC中常用的关于时间格式的转换

    2019独角兽企业重金招聘Python工程师标准>>> 代码可能有点乱 不过应该不影响使用  这些应该基本上能满足大部分用户对于时间的处理需求 DateTimeHelper.h文件 ...

  8. android 时间格式 各种转换

    一些常用的时间格式转换 import java.text.ParsePosition; import java.text.SimpleDateFormat; import java.util.Cale ...

  9. C#中时间格式的转换

    有时候我们要对时间进行转换,达到不同的显示效果 默认格式为:2005-6-6 14:33:34 如果要换成成200506,06-2005,2005-6-6或更多的该怎么办呢 我们要用到:DateTim ...

最新文章

  1. 使用sql来拼接语句,最终传入Mybatis中执行
  2. TLS/SSL握手过程
  3. 软件工程专插本_2021年专插本部分招生专业(拟),广科/广东理工/华商/培正/松田/工商大!...
  4. BZOJ 4269: 再见Xor [高斯消元 线性基]
  5. 当ThreadLocal碰上线程池
  6. 在Java eclipse 中Spring Boot工具安装步骤
  7. oracle存储过程(PL/SQL)
  8. 【剑指offer】出现次数超过一半的数字
  9. ALM11 QC11 官方中文安装包下载
  10. 斐讯K2 刷华硕固件
  11. Hash 表的时间复杂度为什么是 O(1)(面试版)
  12. 十大热门职位公布 高薪行业一目了然
  13. python调用百度api实现摄像头识别文字
  14. uni-app上传图片base64
  15. 薛非的个人资料编程c语言,上海启航考研英语薛非老师
  16. 今日头条后台实习生面试总结
  17. Ant Design Pro 4 动态菜单icon丢失解决办法
  18. java多线程与并发原理
  19. matlab小波神经网络,MATLAB 小波神经网络预测求助大神
  20. 数字孪生风机设备,智慧风电 3D 可视化智能运维

热门文章

  1. 十六进制转换成字符串——CRC
  2. 【Flink】Flink Checkpoint 问题排查实用指南
  3. 【算法】剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
  4. 【算法】剑指 Offer 24. 反转链表
  5. 【Flink】Flink AM container is launched, waiting for AM container to Register with RM
  6. 【JVM】jvm jmap 使用
  7. 【Kafka】KafkaConnection to 1002 was disconnected before the response was read
  8. 【Linux】Linux下 CURL如何发送http请求
  9. Spring:Spring IOC注解方式注册beanDefinition
  10. flink 1.9 编译: flink-shaded-asm-6 找不到