如何在Oracle的午夜和日期之间区分日期?

时间:2010-05-12 10:20:17

标签: oracle date null

我想区分日期(即'12 / 05/2010 00:00:00')与没有指定时间的日期(即'12 / 05/2010')。
此值由用户提供,有时它只是重要的日期,有时是日期和时间,之后应用程序只有在明确提供时才会显示时间。 因此,对于以下输入,我希望得到以下输出:

  • for '12 / 05/2010'我期待'12 / 05/2010'
  • for '12 / 05/2010 09:23'我期待'12 / 05/2010 09:23'
  • for '12 / 05/2010 00:00'我期待'12 / 05/2010 00:00'

我知道我可以在两个单独的列中建模,日期和时间,但我想知道有没有办法在单日期列中处理这个?

1 个答案:

答案 0 :(得分:1)

可以通过否定存储该事实的年份来指示没有时间组件的日期。

  User supplied value       Inserted value

  12/05/2010                12/05/2010 BC
  12/05/2010 09:23          12/05/2010 09:23
  2/05/2010 00:00           2/05/2010 00:00

如果年份是BC年,则选择日期值时,用户省略了时间组件。

话虽如此,我的实际建议是使用专用列来保存关于时间组件是否存在的标志。 我不会自己使用这种否定技术

相关问题