我有一个简单的问题:
select cast( '11-04-15' as date)
适用于SQL,但
select cast( '14-04-15' as date)
抛出错误
Conversion failed when converting date and/or time from character string
为什么会这样? 超过12的日期会抛出错误。
答案 0 :(得分:1)
是的,它会抛出异常是合乎逻辑的。原因是你需要的 保持特定的日期格式,如
dd-mm-yyyy
或mm-dd-yy
或 别的什么
您可以使用DATEFORMATSET DATEFORMAT { format | @format_var }
自行设置日期格式
默认值为mdy
,有效参数为mdy, dmy, ymd, ydm, myd, and dym
请参阅here以获得更多说明。
当您尝试select cast( '11-04-15' as date)
时,它接受11
作为month
而04
接受date
,这是有效的,因为默认日期格式标识mm-dd-yyyy
但在select cast( '14-04-15' as date)
中,它接受14
作为month
,对于默认日期格式无效,因此您需要使用set dateformat your_specific_date_format
进行更改
试
set dateformat dmy
select cast('11-04-15' as date)
select cast( '14-04-15' as date)
两者都有效,因为当前日期格式为dd-mm-yyy
11
和14
都视为对某个日期有效的日期。
答案 1 :(得分:0)
使用SET DATEFORMAT
将日期格式设置为DDMMYY。这样的事情。
SET DATEFORMAT DMY;
SELECT CAST( '11-04-15' as date);
SELECT CAST( '14-04-15' as date);
您也可以使用CONVERT
SELECT CONVERT(DATE,'11-04-15',3);
SELECT CONVERT(DATE,'14-04-15',3);
按照Giorgos Betsos的建议或YYYYMMDD格式输入日期字符串
SELECT CAST ('20150414' AS DATE)