Select CONVERT(datetime, '2015-10-1', 120)
这样就不会错了。
我想把 ‘yyyy-MM’格式的字符串转换为datetime格式
@狗霸人间: 你想得美。
如果你只是要2015-10的话
你就随便找个日期,1~31日随便一个都行。
@爱编程的大叔: 没有这种格式吗
@爱编程的大叔: 只要年月,不要日期。
@狗霸人间: 两个事情你要搞清楚。
1、为啥要保存为DateTime类型。
2、如果你只关心年月,日期无所谓,一般就是2015-10-1 00:00:00:000 这个时间点,反正谁也看不到。
@狗霸人间: 只要年月还有一种方法,就是保存为Integer类型,
像这样201401/201510/201009,这样数据库进行比较应该是比较快的。
我估计着能比Datetime还快点。
@爱编程的大叔: Select CONVERT(datetime, CONVERT (VARCHAR(7), SEND_TIME, 120), 120)
我这个必须要用年月,有需求的。CONVERT (VARCHAR(7), SEND_TIME, 120) :取到的就是年月。
有啥具体办法吗?
@狗霸人间: 方法很具体啊
1、+1,表示每个月的第一天。
Select CONVERT(datetime, CONVERT (VARCHAR(7), SEND_TIME, 120) + '-01', 120)
2、保存为nvarchar
3、保存为Integer
@狗霸人间:
Select CONVERT(datetime, CONVERT (VARCHAR(7), SEND_TIME, 120) + '-01', 120)
@爱编程的大叔: 那好吧,降低需求,把2015-10-21 12:11:50.000 这种格式转换为 这个月的第一天,例:‘2015-10-1’ ,贴下语句
@狗霸人间: 你这一下就把难度提高了,我得琢磨好半天。
@爱编程的大叔: 我的天,大叔,5分拿走。!!
@爱编程的大叔: 我取的这个年月其实是一个查询条件,感觉还是不能改。
你自己在sql语句上拼接下,每个都加上-1,再转成date,不然不行的,大叔已经给出了