求问各位高手如何使用SQL语句批量转换日期表示方法

追梦小驴 2015-12-10 11:26:06
需要将日期转换表示方法,求问各位高手如何使用SQL语句批量转换,示例如下:
将2014/9/1
2014/9/2
2014/9/3
2014/9/4
2014/9/5
2014/9/6
2014/9/7
2014/9/8
2014/9/9
2014/9/10
2014/9/11
2014/9/12
2014/9/13
2014/9/14
2014/9/15
2014/9/16
2014/9/17
2014/9/18
2014/9/19
2014/9/20
2014/9/21
2014/9/22
2014/9/23
2014/9/24
2014/9/25
2014/9/26
2014/9/27
2014/9/28
2014/9/29
2014/9/30
2014/10/1
2014/10/2
2014/10/3
2014/10/4
2014/10/5
2014/10/6
2014/10/7
2014/10/8
2014/10/9
2014/10/10
2014/10/11
2014/10/12
2014/10/13
2014/10/14
2014/10/15
2014/10/16
2014/10/17
2014/10/18
2014/10/19
2014/10/20
2014/10/21
2014/10/22
2014/10/23
2014/10/24
2014/10/25
2014/10/26
2014/10/27
2014/10/28
2014/10/29
2014/10/30
2014/10/31
转化为:
20140901
20140902
20140903
20140904
20140905
20140906
20140907
20140908
20140909
20140910
20140911
20140912
20140913
20140914
20140915
20140916
20140917
20140918
20140919
20140920
20140921
20140922
20140923
20140924
20140925
20140926
20140927
20140928
20140929
20140930
20141001
20141002
20141003
20141004
20141005
20141006
20141007
20141008
20141009
20141010
20141011
20141012
20141013
20141014
20141015
20141016
20141017
20141018
20141019
20141020
20141021
20141022
20141023
20141024
20141025
20141026
20141027
20141028
20141029
20141030
20141031
感谢各位高手指教!
...全文
136 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
追梦小驴 2015-12-16
  • 打赏
  • 举报
回复
引用 2 楼 roy_88 的回复:
用CONVERT转换显示格式 Date 和 Time 样式 如果 expression 为 date 或 time 数据类型,则 style 可以为下表中显示的值之一。其他值作为 0 进行处理。SQL Server 使用科威特算法来支持阿拉伯样式的日期格式。 不带世纪数位 (yy) (1) 带世纪数位 (yyyy) 标准 输入/输出 (3) - 0 或 100 (1, 2) 默认 mon dd yyyy hh:miAM(或 PM) 1 101 美国 mm/dd/yyyy 2 102 ANSI yy.mm.dd 3 103 英国/法国 dd/mm/yyyy 4 104 德国 dd.mm.yy 5 105 意大利 dd-mm-yy 6 106 (1) - dd mon yy 7 107 (1) - mon dd, yy 8 108 - hh:mi:ss - 9 或 109 (1, 2) 默认设置 + 毫秒 mon dd yyyy hh:mi:ss:mmmAM(或 PM) 10 110 美国 mm-dd-yy 11 111 日本 yy/mm/dd 12 112 ISO yymmdd yyyymmdd - 13 或 113 (1, 2) 欧洲默认设置 + 毫秒 dd mon yyyy hh:mi:ss:mmm(24h) 14 114 - hh:mi:ss:mmm(24h) - 20 或 120 (2) ODBC 规范 yyyy-mm-dd hh:mi:ss(24h) - 21 或 121 (2) ODBC 规范(带毫秒) yyyy-mm-dd hh:mi:ss.mmm(24h) - 126 (4) ISO8601 yyyy-mm-ddThh:mi:ss.mmm(无空格) - 127(6, 7) 带时区 Z 的 ISO8601。 yyyy-mm-ddThh:mi:ss.mmmZ (无空格) - 130 (1, 2) 回历 (5) dd mon yyyy hh:mi:ss:mmmAM - 131 (2) 回历 (5) dd/mm/yy hh:mi:ss:mmmAM
又了解了好多日期格式,谢谢你的回答~
追梦小驴 2015-12-16
  • 打赏
  • 举报
回复
引用 3 楼 ch21st 的回复:
单个转换见楼上的说明,你的意思是这些日期批量一次性转换吗?首先要直到每个日期之间靠什么分割 我假设是回车换行符。转行用逗号分隔,你可以再替换为别的

DECLARE @sxml XML
DECLARE @datearray VARCHAR(MAX)=
'2014/9/1
2014/9/2
2014/9/3
2014/9/4
2014/9/5
2014/9/6
2014/9/7
2014/9/8
2014/9/9
2014/9/10
2014/9/11
2014/9/12
2014/9/13
2014/9/14
2014/9/15
2014/9/16
2014/9/17
2014/9/18
2014/9/19
2014/9/20
2014/9/21
2014/9/22
2014/9/23
2014/9/24
2014/9/25
2014/9/26
2014/9/27
2014/9/28
2014/9/29
2014/9/30
2014/10/1
2014/10/2
2014/10/3
2014/10/4
2014/10/5
2014/10/6
2014/10/7
2014/10/8
2014/10/9
2014/10/10
2014/10/11
2014/10/12
2014/10/13
2014/10/14
2014/10/15
2014/10/16
2014/10/17
2014/10/18
2014/10/19
2014/10/20
2014/10/21
2014/10/22
2014/10/23
2014/10/24
2014/10/25
2014/10/26
2014/10/27
2014/10/28
2014/10/29
2014/10/30
2014/10/31'
SET @sxml='<r><n>'+REPLACE(@datearray,CHAR(13)+CHAR(10),'</n><n>')+'</n></r>'
SELECT  STUFF((SELECT  ','+CONVERT(varchar(100),b.value('.','datetime'),112) FROM @sxml.nodes('r/n') AS s(b)
FOR XML PATH('')),1,1,'')

谢谢您的回答,用的时候事先进行了字符匹配,把2014/9/1,2014/9/12,2014/10/1,这种先转换成2014/09/01,2014/09/12,2014/10/01,之后再转换成20140901,20140912,20141001的,再次谢谢你的回答~
追梦小驴 2015-12-16
  • 打赏
  • 举报
回复
引用 1 楼 u010192842 的回复:

Select CONVERT(varchar(100), cast('2014/9/1' as datetime), 112)
--Select CONVERT(varchar(100), cast('字段列名' as datetime), 112) from 表名
谢谢您的回答,已经结合你们的回答解决了~
Yole 2015-12-10
  • 打赏
  • 举报
回复

Select CONVERT(varchar(100), cast('2014/9/1' as datetime), 112)
--Select CONVERT(varchar(100), cast('字段列名' as datetime), 112) from 表名
道素 2015-12-10
  • 打赏
  • 举报
回复
单个转换见楼上的说明,你的意思是这些日期批量一次性转换吗?首先要直到每个日期之间靠什么分割 我假设是回车换行符。转行用逗号分隔,你可以再替换为别的

DECLARE @sxml XML
DECLARE @datearray VARCHAR(MAX)=
'2014/9/1
2014/9/2
2014/9/3
2014/9/4
2014/9/5
2014/9/6
2014/9/7
2014/9/8
2014/9/9
2014/9/10
2014/9/11
2014/9/12
2014/9/13
2014/9/14
2014/9/15
2014/9/16
2014/9/17
2014/9/18
2014/9/19
2014/9/20
2014/9/21
2014/9/22
2014/9/23
2014/9/24
2014/9/25
2014/9/26
2014/9/27
2014/9/28
2014/9/29
2014/9/30
2014/10/1
2014/10/2
2014/10/3
2014/10/4
2014/10/5
2014/10/6
2014/10/7
2014/10/8
2014/10/9
2014/10/10
2014/10/11
2014/10/12
2014/10/13
2014/10/14
2014/10/15
2014/10/16
2014/10/17
2014/10/18
2014/10/19
2014/10/20
2014/10/21
2014/10/22
2014/10/23
2014/10/24
2014/10/25
2014/10/26
2014/10/27
2014/10/28
2014/10/29
2014/10/30
2014/10/31'
SET @sxml='<r><n>'+REPLACE(@datearray,CHAR(13)+CHAR(10),'</n><n>')+'</n></r>'
SELECT  STUFF((SELECT  ','+CONVERT(varchar(100),b.value('.','datetime'),112) FROM @sxml.nodes('r/n') AS s(b)
FOR XML PATH('')),1,1,'')

中国风 2015-12-10
  • 打赏
  • 举报
回复
用CONVERT转换显示格式 Date 和 Time 样式 如果 expression 为 date 或 time 数据类型,则 style 可以为下表中显示的值之一。其他值作为 0 进行处理。SQL Server 使用科威特算法来支持阿拉伯样式的日期格式。 不带世纪数位 (yy) (1) 带世纪数位 (yyyy) 标准 输入/输出 (3) - 0 或 100 (1, 2) 默认 mon dd yyyy hh:miAM(或 PM) 1 101 美国 mm/dd/yyyy 2 102 ANSI yy.mm.dd 3 103 英国/法国 dd/mm/yyyy 4 104 德国 dd.mm.yy 5 105 意大利 dd-mm-yy 6 106 (1) - dd mon yy 7 107 (1) - mon dd, yy 8 108 - hh:mi:ss - 9 或 109 (1, 2) 默认设置 + 毫秒 mon dd yyyy hh:mi:ss:mmmAM(或 PM) 10 110 美国 mm-dd-yy 11 111 日本 yy/mm/dd 12 112 ISO yymmdd yyyymmdd - 13 或 113 (1, 2) 欧洲默认设置 + 毫秒 dd mon yyyy hh:mi:ss:mmm(24h) 14 114 - hh:mi:ss:mmm(24h) - 20 或 120 (2) ODBC 规范 yyyy-mm-dd hh:mi:ss(24h) - 21 或 121 (2) ODBC 规范(带毫秒) yyyy-mm-dd hh:mi:ss.mmm(24h) - 126 (4) ISO8601 yyyy-mm-ddThh:mi:ss.mmm(无空格) - 127(6, 7) 带时区 Z 的 ISO8601。 yyyy-mm-ddThh:mi:ss.mmmZ (无空格) - 130 (1, 2) 回历 (5) dd mon yyyy hh:mi:ss:mmmAM - 131 (2) 回历 (5) dd/mm/yy hh:mi:ss:mmmAM

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧