sql日期格式“ 2019-10-30”,“ 2019/10/30”,“ 10-30-2019”和“ 10/30/2019”

时间:2019-11-10 23:33:08

标签: sql mariadb

我认为毫无疑问,在sql中,"2019-10-30"是有效的日期格式,并且看起来也像"2019/10/30"一样被接受。

"10-30-2019""10/30/2019"呢?

我在mariaDB中尝试了它们,但是它们的格式错误,但是我想我确实在某些sql表中看到了它们。请帮助我澄清日期格式。谢谢

2 个答案:

答案 0 :(得分:1)

在MariaDB中,日期格式为yyyy-mm-dd。但是MariaDB非常宽松,可以接受其他格式。来自the documentation

  

DATE字符串是以下格式之一的字符串:'YYYY-MM-DD''YY-MM-DD'。注意,任何标点符号都可以用作分隔符。所有分隔符必须由1个字符组成。可以在同一字符串中使用不同的定界符。分隔符是可选的(但如果使用一个分隔符,则必须使用所有分隔符)。

     

DATE文字也可以是整数,格式为YYYYMMDDYYMMDD

     

以下所有DATE文字均有效,并且它们都表示相同的值:

     

'19940101'

     

'940101'

     

'1994-01-01'

     

'94/01/01'

     

'1994-01/01'

     

'94:01!01'

     

19940101

     

940101

因此,对于您提供的示例:

2019-10-30    -- ok: default format
2019/10/30    -- ok: format with alternative delimiter
10-30-2019    -- NOT ok
10/30/2019    -- NOT ok

您可以使用函数str_to_date()将字符串转换为日期。

str_to_date('10-30-2019', '%m-%d-%Y')
str_to_date('10/30/2019', '%m/%d/%Y')

答案 1 :(得分:0)

您真正要做的是将日期的字符串表示形式转换为内部日期时间表示形式或数据类型。您所指的格式是ISO 8601。 ISO日期(带连字符或括号的2019年10月30日)格式通常是大多数数据库使用的本机或默认字符串转换,这就是即使您不指定转换方式也能使用这些格式的原因。如果打算从其他格式转换,则可能需要指定它们。您的本地设置的默认表示形式也可能起作用,但这取决于特定的数据库。