SQL中文日期转换成数字,求解

kittysisi527 2016-07-22 04:30:41
SQL数据库里的时间dt是某年某月某日 上午/下午某时某分某秒(中文),希望select出来的时间格式是yyyy-mm-dd,运行以下脚本报错,缺失表达式,求解!

SELECT
CONVERT(varchar(10),CONVERT(dt,111),111)
FROM 表
...全文
712 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
道玄希言 2016-07-22
  • 打赏
  • 举报
回复


DECLARE @dt nvarchar(50) 
SET @dt = '2016年7月8日上午1时2分3秒'
SELECT CONVERT(date,REPLACE(REPLACE(SUBSTRING(@dt,
1, CHARINDEX('日',@dt)-1), '年', '-'), '月', '-'), 120)

--------------------------------------------------------------------------------
2016-07-08

唐诗三百首 2016-07-22
  • 打赏
  • 举报
回复
建个函数转换为Datetime类型,

create table 表(dt varchar(100))

insert into 表(dt)
 select '2016年7月22日 下午6时23分24秒' union all
 select '2016年7月22日 上午4时5分6秒'


-- 建函数
create function dbo.fn_conv2Datetime
(@x varchar(100)) returns datetime
as
begin
 declare @y datetime,@sx bit
 select @x=replace(@x,'年','-')
 select @x=replace(@x,'月','-')
 select @x=replace(@x,'日','')

 select @x=replace(@x,'时',':')
 select @x=replace(@x,'分',':')
 select @x=replace(@x,'秒','')

 select @sx=case when charindex('上午',@x)>0 then 0 else 1 end
 select @x=replace(@x,'上午',' ')
 select @x=replace(@x,'下午',' ')

 select @y=cast(@x as datetime)
 select @y=case when @sx=1 then dateadd(hh,12,@y) else @y end

 return @y
end


-- 结果
select dt,
       new_dt=dbo.fn_conv2Datetime(dt)
 from 表

/*
dt                                         new_dt
---------------------------------------- -----------------------
2016年7月22日 下午6时23分24秒                2016-07-22 18:23:24.000
2016年7月22日 上午4时5分6秒                  2016-07-22 04:05:06.000

(2 row(s) affected)
*/
kingtiy 2016-07-22
  • 打赏
  • 举报
回复

declare @date nvarchar(50)= '2014年05月01日 下午1时20分21秒';
select  case when @date like '%上午%'
             then convert(datetime,replace(replace(replace(replace(replace(replace(replace(@date,
                                                              '年','-'),'月','-'),
                                                              '日',''),'下午',''),
                                                           '时',':'),'分',':'),
                                           '秒',''))
             else dateadd(hh,12,
                          convert(datetime,replace(replace(replace(replace(replace(replace(replace(@date,
                                                              '年','-'),'月','-'),
                                                              '日',''),'下午',''),
                                                              '时',':'),'分',':'),
                                                   '秒','')))
        end;
zhang9418hn 2016-07-22
  • 打赏
  • 举报
回复
最笨的方法: declare @str nvarchar(100)= '2016年7月22日下午15时40分20秒' set @str=REPLACE(@str,'年','-') set @str=REPLACE(@str,'月','-') set @str=REPLACE(@str,'日',' ') set @str=REPLACE(@str,'下午','') set @str=REPLACE(@str,'上午','') set @str=REPLACE(@str,'时',':') set @str=REPLACE(@str,'分',':') set @str=REPLACE(@str,'秒','') select CONVERT(datetime,@str)
卖水果的net 2016-07-22
  • 打赏
  • 举报
回复
dt 这列的数据,是什么样的呢,你举几个例子。
1. 解开用户 1 2. 取得系统当前时间 1 3. 任何含有空值的表达式计算结果都是空值和字符串拼接 1 4. distinct:select distinct deptno,job from emp; distinct是指deptno与job组合的唯一 2 5. 指定转义字符 2 6. order by 2 7. lower函数 2 8. subsr函数 2 9. chr、ascii函数将编码转换为字符或将字符转换为ASCII码 2 10. round四舍五入函数 2 11. to_char函数将日期数字串转换为固定的格式 2 12. to_date函数将字符串转换为指定的日期格式 2 13. to_number函数 2 14. group by 2 15. 建表create 2 16. 修改表结构alter 3 17. 查看相关表、视图、字典、约束、索引等 3 18. 事务概念 4 19. 范式 4 20. pl_sql 4 1)需要在控制台打印数据的时候必须先执行:set serveroutput on; 4 2)简单例子: 4 3)打印乘法表 4 4)打印星号三角形 4 5)根据雇员工资分级显示税金。 4 6)使用CASE结构实现职务转换。 4 7)求:12+32+52+...+152 的值 4 8)输出一个空心三角形。 4 9)使用二重循环求1!+2!+...+10!的值。 4 21. 连表查询操作(员工-部门-薪水) 4 1) 表结构 4 2) 求部门中那些人的薪水最高 4 3) 求部门平均薪水的等级 5 4) 求部门平均的薪水等级 5 5) 雇员中有哪些人是经理 5 6) 不准用组函数,求薪水最高值 5 7) 求平均薪水最高的部门的部门编号 5 8) 求平均薪水最高的部门的部门名称 5 ①不建视图 5 ②使用视图 5 9) 求部门经理人中平均薪水最低的部门名称 6 10)求比普通员工最高薪水还要高的经理人名称 6 11)求薪水最高的前5名雇员 6
Visual Basic.NET精彩编程百例 李强 源代码 解压后31M 内容简介回到顶部↑    本书按照“实例一操作步骤一技术要点一归纳注释”的结构,介绍编写一个Visual Basic.NET程序的过程,以及编写课程中用到的知识。本书精选了100个VisulaBasic.NET程序实例,并全部编译通过。本书从Visual Basic.NET的各种不同应用方面来讲解如何使用Visual Basic.NET进行编程。最后,选择3个大的综合实例详细介绍程序的开发,从而较大程度地提高读者的编程能力。    本书以实例教程的方式编写,各部分之间独立性强,每一个实例可以作为一个单独的教程使用。本书不仅适合初学VisualBasic.NET的读者阅读,也可以使有VisualBasic开发经验的读者获益匪浅。由于对各方面的程序开发书中都有相应的实例,所以还可以作为一本不错的VisualBasic.NET编程开发书。 前言 第一篇 窗体设计及控件应用 实例1 你好程序 实例2 消息提示 实例3 输入对话框 实例4 选择按钮 实例5 时间日期 实例6 计时器控件 实例7 滚动条控件 实例8 颜色对话框 实例9 字体对话框 实例10 打开保存对话框 实例11 链接标签 实例12 编辑菜单 实例13 快捷菜单 实例14 动态菜单 实例15 进度条控件 实例16 列表框控件 实例17 图片框控件 实例18 状态栏控件 .实例19 立体文字 实例20 工具栏控件 实例21 组合框控件 实例22 系统栏图标控件 实例23 树视图控件 实例24 列表视图控件 实例25 选项卡控件 实例26 richtextbox控件 实例27 分割器控件 实例28 多窗体设计 实例29 多文档界面 实例30 日期控件 第二篇 数字及字符串处理 实例31 随机数 实例32 简单计算器 实例33 冒泡排序 实例34 进制转换 实例35 中文数字转换 实例36 求解方程 实例37 反转字符串 实例38 查找字符串 实例39 替换字符串 实例40 比较字符串 第三篇 文件操作 实例41 文字处理 实例42 创建删除文件夹 实例43 移动文件 实例44 判断文件存在与否 实例45 加密解密文件 第四篇 图形图像处理 实例46 使用画笔(1) 实例47 使用画笔(2) 实例48 使用画刷 实例49 绘制线图 实例50 绘制填充图形 实例51 直线图案 实例52 递归图案 实例53 绘制三维图形 实例54 模拟雪花 实例55 模拟绘图板 实例56 打开保存图像 实例57 剪切粘贴图像 实例58 浏览图片 实例59 变换图像 实例60 滤镜效果 实例61 统计表图形 实例62 百叶窗效果 实例63 动画效果 实例64 调节图像色彩 实例65 拾色器 第五篇 多媒体编程 实例66 mp3播放器 实例67 视频播放器 实例68 dvd播放器 实例69 flash播放器 实例70 动画播放器 第六篇 数据库开发 实例71 建立数据表 实例72 用access建表 实例73 连接access数据库 实例74 连接sqlserver数据库 实例75 绑定数据 实例76 数据窗体向导 实例77 dataview控件 实例78 command和datareader类的使用 实例79 在web中访问数据库 实例80 水晶报表 第七篇 网络编程 实例81 获取计算机名称 实例82 电话拨号程序 实例83 web浏览器 实例84 发送邮件 实例85 发送广播 实例86 聊天工具 实例87 sockets类的使用 实例88 web应用程序 实例89 table控件 实例90 自定义web控件 第八篇 其他应用 实例91 获取cpu信息 实例92 获取文件信息 实例93 打印预览 实例94 椭圆窗体 实例95 控制台程序 实例96 创建xml文档 实例97 创建xml架构 第九篇 综合实例 实例98 计算器 实例99 个人图书管理 实例100 打包发布

22,302

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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