Est-il possible d'utiliser une contrainte CHECK pour empêcher toute date qui tombe un dimanche? Je ne veux pas utiliser de déclencheur.Oracle 10gr2: empêchez les dates tombées un dimanche?
1
A
Répondre
8
Oui, un La contrainte de vérification peut vérifier que le jour de la semaine n'est pas le dimanche. Voici un exemple:
create table date_test (entry_date date);
alter table date_test add constraint day_is_not_sunday
check (to_char(entry_date,'DAY','NLS_DATE_LANGUAGE = ENGLISH') not like 'SUNDAY%');
--Il sont des espaces blancs à droite du dimanche ou si semblable rtrim est nécessaire pour correspondre à la chaîne.
insert into date_test values(to_date('2008-10-12','YYYY-MM-DD')); --Sunday
insert into date_test values(to_date('2008-10-11','YYYY-MM-DD'));
insert into date_test values(to_date('2008-10-10','YYYY-MM-DD'));
insert into date_test values(to_date('2008-10-09','YYYY-MM-DD'));
insert into date_test values(to_date('2008-10-08','YYYY-MM-DD'));
insert into date_test values(to_date('2008-10-07','YYYY-MM-DD'));
insert into date_test values(to_date('2008-10-06','YYYY-MM-DD'));
Lorsque vous essayez d'insérer une date qui est un dimanche, il dira:
ORA-02290: check constraint (SYS.DAY_IS_NOT_SUNDAY) violated
1
pas sûr de la contrainte réelle, mais vous pouvez utiliser la fonction:
TO_CHAR(sysdate, 'D');
pour obtenir le jour de la semaine comme un entier, puis faire un petit contrôle sur elle
Questions connexes
- 1. Oracle 10gr2: les dates d'entrée en vigueur sont-elles entre 9h et 17h?
- 2. trouver combien de dimanche à partir de 2 dates données?
- 3. Utilisation des plages de dates dans PHP/Oracle
- 4. Oracle SQL LOOP (entre 2 dates) et le comptage
- 5. Empêchez le composant COM Delphi d'afficher MessageBox()
- 6. Traiter avec les dates
- 7. Empêchez explicitement ContextMenuStrip de charger dans C#
- 8. Dernier dimanche d'un an en C#
- 9. Comment trouver les curseurs ouverts courants dans Oracle
- 10. arithmétique Modulo sur les dates dans SQL
- 11. Trouver les jours de la semaine dans une plage de dates en utilisant Oracle SQL
- 12. Comment obtenir les différences entre deux dates dans Oracle qui étaient dans la même colonne?
- 13. Liste/tableaux - Vérifier les dates
- 14. Validation CakePHP pour les dates
- 15. Quel est un bon moyen de déterminer les dates d'une plage de dates?
- 16. Cocoa Touch: Disposer des dates dans un calendrier mensuel
- 17. Sélectionnez les dates les plus récentes
- 18. Comment valider les dates dans un script CGI Perl?
- 19. Comment trouver les dates affichées dans un contrôle Silverlight Calendar?
- 20. Déterminer si une date est un samedi ou un dimanche en utilisant JavaScript
- 21. Les dates avant le 01 janvier 1970?
- 22. PHP: Comment obtenir dimanche et samedi une entrée de date?
- 23. SQL Server 2005 comparer les dates
- 24. Javascript Date.Parse gonfle sur les dates russes
- 25. Stocker les dates dépendantes dans SQL
- 26. Algorithme de hachage pour les dates
- 27. SUM données selon les dates dans Excel
- 28. sql fonction charateristic pour les dates avg
- 29. Conception de table pour les dates cycliques
- 30. Calculer les plages de dates manquants et des plages de dates qui se chevauchent entre deux dates
Y at-il des préoccupations au sujet de la localisation lors de l'utilisation de cette méthode? Est-ce que to_char (..., 'DAY') renvoie toujours des noms de jour en anglais? –
Bon point, j'ai mis à jour la contrainte pour mettre NLS_DATE_LANGUAGE = ENGLISH. Apparemment TO_CHAR (sysdate, 'D') a un problème similaire ici parce que la date codée 1 varie selon les régions. – Plasmer
Juste une suggestion: si vous utilisez '' fmDAY'' pour le format, vous pouvez changer la comparaison en simple égalité '= 'SUNDAY''. –