我需要检查存储在SQL表中的格式是否为YYYY-MM-DD。检查格式是否为YYYY-MM-DD
回答
尝试这种方式
SELECT CASE WHEN ISDATE(@string) = 1
AND @string LIKE '[1-2][0-9][0-9][0-9]/[0-1][0-9]/[0-3][0-9]'
THEN 1 ELSE 0 END;
@string是日期。
你不存储特定的格式(我认为MS SQL存储为两个整数),你选择你的格式输出。当我说你选择时,我的意思是你有你的默认值(大多数是在安装MS SQL时自动设置,或者基于你的国家,时区等使用的任何设置 - 你可以改变这一点)以及你在执行脚本时选择的默认值。
MS-SQL Server将日期存储为浮点数。试试这个:SELECT CAST({d'1900-01-01'} AS FLOAT)作为FirstPossible,CAST(GETDATE()作为FLOAT)作为CurrentDate'。整数部分是自1900-01-01以来的天数,而逗号后面的部分是当天的时间。这就是为什么增加时间会导致1900年1月某个地方有趣的日期的原因:-) – Shnugo
你可以设置格式,但据我所知不能检查格式。
首要的是:如果日期值存储在date
或datetime
或等效的时态数据类型列中,那么在数据库级别中不会有日期格式。日期本身已通过在特定数据库引擎的给定数据类型中定义的规则进行验证,并以其定义的任何二进制格式进行存储。
如果数据是一个字符串(从文件或例如VARCHAR列),那么你可以,如果它是在使用TO_DATE()
或TRY_CONVERT()
功能在MySQL的SQL Server和STR_TO_DATE()
的新版本给定的格式验证,或者你可以使用第三方/自己写的模块/ clrs来做到这一点。
这些验证只会检查字符串是否符合给定的格式,而日期部分是否在可接受的日期范围内,但不会测试值的含义。将02/03/2005字符串转换为日期也适用于MM/DD/YYYY
和DD/MM/YYYY
格式,除非我们有关于最初存储它的环境的信息,否则无法确定哪一个是真正的值。
永远不要将时态数据存储在基于字符的列(如varchar)中,使用符合您需要的数据类型(DATE/DATETIME/TIMESTAMP/whatever)。
- 1. 使用格式YYYYMMDD
- 2. 如何检查格式是否正确
- 3. 将yyyymmdd转换为月份格式
- 4. C#解析timestampwith格式为“YYYYMMDD HH:MM:SS.ms”
- 5. getline检查行是否为空格
- 6. SQL Server日期格式yyyymmdd
- 7. 检查文件是否具有Python格式的CSV格式
- 8. 检查Sympy表达式是否为Nan?
- 9. 如何检查给定文件是否为PROPER文件格式?
- 10. Javascript检查文件是否为mp3格式?
- 11. 使用shell脚本检查文件是否为jpeg格式
- 12. 使用Regex检查Double值是否为特定格式
- 13. 如何检查具有出生日期格式的列是否在sql server中有yyyymmdd?
- 14. 我是否要检查手机时间格式是否设置为24小时?
- 15. 检查属性是否存在与检查是否为空
- 16. 检查事件是否为
- 17. 检查JTextField是否为空
- 18. 检查stderr是否为空
- 19. 检查NumericUpDown是否为空
- 20. laravel检查是否为空
- 21. QPointer检查是否为NULL?
- 22. 检查imageView是否为空
- 23. AppleScriptObjC检查UItextfield是否为
- 24. 检查tabBar是否为
- 25. 检查表是否为空
- 26. 检查CheckedListBox是否为空
- 27. 检查JValue是否为空
- 28. PHP检查是否为假
- 29. PHP:检查是否为0?
- 30. 检查StringBuffer是否为空
Tag dbms used! (当涉及到日期/时间时,太多的产品远远不符合ANSI SQL标准。) – jarlh
但是,您为什么需要这样做?总是使用'日期'数据类型的日期... – jarlh
我正在分析一个已经存在的数据集。我试过了:像'%YYYY-MM-DD%''但是确定它是否正确。 –