mysql 日期在数据库中用char(14)来存储 取的时候怎么比较时间大小

mysql 日期在数据库中用char(14)来存储 取的时候怎么比较时间大小,第1张

1.首先,把读取出来的值转换成DateTime类型,因为字符串不能比较大小

DateTime dTimeDB1 = Convert.todateTime(数据库中的值)

DateTime dTimeDB2 = Convert.todateTime(数据库中的值)

2.然后,再进行比较

使用比较方法:

if(DateTime.Compare(dTimeDB1 ,dTimeDB2) >0)

说明:dTimeDB1 >dTimeDB2即dTimeDB1 是晚于dTimeDB2的时间

当然也可以不使用比较方法,而直接比较时间大小,就像比较数值一样

第二种方法则可以利用sql提供的日期转换函数了。CONVERT (<data_ type[ length ], <expression [, style])1)data_type为SQL Server系统定义的数据类型,用户自定义的数据类型不能在此使用。2)length用于指定数据的长度,缺省值为30。3)用CONVERT() 函数的style 选项能以不同的格式显示日期和时间。style 是将DATATIME 和SMALLDATETIME 数据转换为字符串时所选用的由SQL Server 系统提供的转换样式编号,不同的样式编号有不同的输出格式。上图中GETDATE()函数是以DATETIME 的缺省格式返回系统当前的日期和时间 。如果用这种方法来判断某一个字段的话,则存入的日期字段的字符串格式只要是能让sql server完成对日期的转换就可以了,而不一定要像第一种方法中的那样严格。还是说adddate字段,比如要比较它是否大于当前的日期,就可以这样写:个人认为第二种方法更加保险一些。

Mysql在比较两种不同数据类型时,第一步是将他们转化为同一种类型,然后在比较。那么Date和String在比较的时候,一定是把String转化为Date吗?答案是Yes.

http://dev.mysql.com/doc/refman/5.0/en/type-conversion.html

If one of the arguments is a TIMESTAMP or DATETIME column and the other argument is a constant, the constant is converted to a timestamp before the comparison is performed.

简单举个例子,如果是用字符串比较,"2004-04-31"这个string应该比2004-01-01这个date来得大,但是4-31是一个invalid的日期(4月是小月),会被转化成"0000-00-00",所以2004-01-01 (日期) >"2014-04-31"。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9576139.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存