Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 根据Where子句转换日期_Sql - Fatal编程技术网

Sql 根据Where子句转换日期

Sql 根据Where子句转换日期,sql,Sql,我有以下带有数据的虚拟表: ACID srno date(mm/dd/yyyy) name 3 1 04/12/2010 mahesh 3 2 04/12/2010 mahendra 现在,如果我尝试使用以下SQL Transact: select srno from dummy where name = 'mahesh' and date= convert(datetim

我有以下带有数据的虚拟表:

ACID        srno    date(mm/dd/yyyy)    name
3            1     04/12/2010          mahesh
3            2     04/12/2010          mahendra
现在,如果我尝试使用以下SQL Transact:

select srno from dummy
where name = 'mahesh'
and date= convert(datetime,'12/04/2010',101) –- I have date in dd/MM/yyyy Format
and ACID=3
它没有返回表的srno。这意味着日期不是如上所述的execute convert语句
原因是什么?

如果您使用
101
格式转换
12/04/2010
,您将得到日期“2010年12月4日”,该日期不在您的数据库中。使用格式
103
将格式为
dd/mm/yyyy
的日期转换为
DateTime

数据库使用DateTime类型存储日期,该类型的格式不可知。它确实有一个字符串转换的默认格式,在数据库中似乎是mm/dd/yyyy(101)

但是,在转换字符串以将其添加到表中时,需要在示例dd/mm/yyyy(103)中指定输入字符串的格式


查看详细信息,其中列出了可用于日期的所有格式样式。

尝试使用样式103而不是101

select srno from dummy
where name = 'mahesh'
and date= convert(datetime,'12/04/2010',103) –- I have date in dd/MM/yyyy Format
and ACID=3

老实说,如果要在SQL Server中指定日期文字,请使用最简单的YYYYMMDD格式,例如

and dummy.date = '20100412'
它是健壮的,适用于所有区域、用户语言日期格式设置。这假设比较的另一端已经是日期列。即使必须强制转换,使用此格式也不需要指定格式

and dummy.date = cast('20100412' as datetime)

dummy.date
列是日期时间数据类型?@mahesh,103描述了输入值的格式。101没有正确描述输入。请记住103使用斜杠,例如25/12/2010,而104使用圆点,例如25.12。2010@JoeStefanelli,SQL数据库以mm/dd/yyyy的顺序存储日期,而我的日期是2010年4月12日--dd/mm/yyyy的顺序,这就是为什么上面的语句需要103而不是101。“原因是什么?”乔,你说得对,但我还是不明白为什么?如果sql server数据存储为mm/dd/yyyy格式,则mm/dd/yyyy代码的sql server数据存储是否为101 ok?dd/mm/yyyy格式为103@mahesh:SQL并不是真正在后台以mm/dd/yyyy格式存储日期。为转换选择的样式需要与输入值的格式(dd/MM/yyyy)匹配。是的,这是正确的,但如果印度等国家的某些日期模式类似于dd/MM/yyyy格式,并且根据您的建议,我必须首先转换为yyyyymmddwork@mahesh你可能没有抓住要点。SQL server日期不以任何“格式”存储。格式化的是要与列中存储的内容进行比较的输入(文字)。如果您是从用户或屏幕获取输入,那么您应该使用查询参数,这也不关心格式。谢谢,但必须很好地理解您的评论,例如SQL server日期不会以任何“格式”存储。。。如果为真,那么为什么有datetime数据类型可用?。若为真,则数据库表中的why以MM/DD/YYYY格式显示。我的意思是,如果我通过103代码格式插入DD/MM/YYYY格式的日期,它会自动存储为MM/DD/YYYY格式,为什么?