首页 新闻 会员 周边 捐助

sql语句转换日期格式

0
悬赏园豆:5 [已解决问题] 解决于 2015-10-26 15:10

我想把 ‘yyyy-MM’格式的字符串转换为datetime格式

我的写法:

Select CONVERT(datetime, '2015-10', 120)

报错了。请教如何能转换成功。

狗霸人间的主页 狗霸人间 | 初学一级 | 园豆:4
提问于:2015-10-26 14:36
< >
分享
最佳答案
0

Select CONVERT(datetime, '2015-10-1', 120)

这样就不会错了。

收获园豆:5
爱编程的大叔 | 高人七级 |园豆:30844 | 2015-10-26 14:43

我想把 ‘yyyy-MM’格式的字符串转换为datetime格式

狗霸人间 | 园豆:4 (初学一级) | 2015-10-26 14:46

@狗霸人间: 你想得美。

如果你只是要2015-10的话

你就随便找个日期,1~31日随便一个都行。

爱编程的大叔 | 园豆:30844 (高人七级) | 2015-10-26 14:47

@爱编程的大叔: 没有这种格式吗

狗霸人间 | 园豆:4 (初学一级) | 2015-10-26 14:50

@爱编程的大叔: 只要年月,不要日期。

狗霸人间 | 园豆:4 (初学一级) | 2015-10-26 14:53

@狗霸人间: 两个事情你要搞清楚。

1、为啥要保存为DateTime类型。

2、如果你只关心年月,日期无所谓,一般就是2015-10-1 00:00:00:000 这个时间点,反正谁也看不到。

爱编程的大叔 | 园豆:30844 (高人七级) | 2015-10-26 14:54

@狗霸人间: 只要年月还有一种方法,就是保存为Integer类型,

像这样201401/201510/201009,这样数据库进行比较应该是比较快的。

我估计着能比Datetime还快点。

爱编程的大叔 | 园豆:30844 (高人七级) | 2015-10-26 14:55

@爱编程的大叔: Select CONVERT(datetime, CONVERT (VARCHAR(7), SEND_TIME, 120), 120)

我这个必须要用年月,有需求的。CONVERT (VARCHAR(7), SEND_TIME, 120)  :取到的就是年月。

有啥具体办法吗?

狗霸人间 | 园豆:4 (初学一级) | 2015-10-26 14:58

@狗霸人间: 方法很具体啊

1、+1,表示每个月的第一天。

Select CONVERT(datetime, CONVERT (VARCHAR(7), SEND_TIME, 120) + '-01', 120)

2、保存为nvarchar

3、保存为Integer

爱编程的大叔 | 园豆:30844 (高人七级) | 2015-10-26 15:00

@狗霸人间: 

Select CONVERT(datetime, CONVERT (VARCHAR(7), SEND_TIME, 120) + '-01', 120)

爱编程的大叔 | 园豆:30844 (高人七级) | 2015-10-26 15:03

@爱编程的大叔: 那好吧,降低需求,把2015-10-21 12:11:50.000  这种格式转换为  这个月的第一天,例:‘2015-10-1’    ,贴下语句

狗霸人间 | 园豆:4 (初学一级) | 2015-10-26 15:03

@狗霸人间: 你这一下就把难度提高了,我得琢磨好半天。

爱编程的大叔 | 园豆:30844 (高人七级) | 2015-10-26 15:04

@爱编程的大叔: 我的天,大叔,5分拿走。!!

狗霸人间 | 园豆:4 (初学一级) | 2015-10-26 15:05

@爱编程的大叔: 我取的这个年月其实是一个查询条件,感觉还是不能改。

狗霸人间 | 园豆:4 (初学一级) | 2015-10-26 15:07
其他回答(1)
0

你自己在sql语句上拼接下,每个都加上-1,再转成date,不然不行的,大叔已经给出了

稳稳的河 | 园豆:4216 (老鸟四级) | 2015-10-26 14:57
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册